Jakiś czas temu użyłem narzędzia typu sekwencyjnego do wypisania sekwencji standardowych liczb pseudolosowych na standardowe wyjście. Możesz podać zakres, ziarno, liczbę próbek i wiele więcej.
Właśnie zapomniałem nazwy tego narzędzia. Czy ktoś może mi pomóc?
Być może znasz jeszcze bardziej zaawansowane narzędzie, które na przykład obsługuje różne rozkłady prawdopodobieństwa lub nawet generowanie sekwencji losowych słów pod różnymi alfabetami i rozkładami długości / znaków.
shell
command-line
maxschlepzig
źródło
źródło
Jeśli nie masz nic przeciwko napisaniu małego skryptu, aby zrobić to, czego potrzebujesz, polecam to zrobić w R , systemie statystyk open source.
Rozważmy na przykład ten linijkę, aby uzyskać listę 100 liczb rozkładów Gaussa:
Rozwalmy to.
Standardowe
R
polecenie przenosi Cię do interaktywnego środowiska programowania, co jest w porządku, jeśli próbujesz dowiedzieć się, jak zrobić coś ręcznie lub budujesz coś stopniowo, ale z twojego pytania brzmi, jakbyś potrzebował tylko listy liczb wysłać do innego programu. Zamiast tego używamyRscript
, który zachowuje się bardziej jak tradycyjny interpreter skryptów uniksowych: możesz przekazać mu nazwę pliku zawierającego skrypt R lub użyć standardowej-e
flagi, aby przekazać cały tekst programu w wierszu poleceń.rnorm()
jest funkcją R, aby uzyskać listę liczb losowych o rozkładzie „normalnym” lub Gaussa. Zajmuje do trzech parametrów, z których tylko pierwszy jest wymagany, ile liczb chcesz. Poprosiliśmy o 100. Biorąc wartości domyślne dla pozostałych dwóch opcjonalnych parametrów, otrzymujemy średnią 0 i odchylenie standardowe 1.Arytmetyka po prostu pokazuje fajną funkcję języka R: możesz wykonywać arytmetykę na całych tabelach danych, macierzach itp., Równie łatwo jak wartość skalarną w bardziej typowym języku. Pomnożyłem wszystkie wygenerowane wartości przez 100 i dodałem do nich 100, tylko dlatego, że mogę. Ponieważ R jest pełnoprawnym językiem programowania, nie ma ograniczeń co do tego, co możesz zrobić z tą listą liczb. To zaleta korzystania z takiego systemu zamiast polecenia o ustalonym celu, takiego jak
jot
.Wynik tej poprzedniej operacji przekazujemy do
write()
funkcji, która domyślnie zapisuje dane do pliku, ale przesłoniliśmy to, przekazując pusty łańcuch drugiego parametru, nazwy pliku, więc zapisuje tabelę do zamiast tego terminal. Następny parametr,1
po prostu mówi mu, że chcemy, aby nasze dane wyjściowe były w formacie jednokolumnowym.R ma wiele innych funkcji generowania liczb losowych wbudowanych w system podstawowy. Na przykład możemy naśladować
jot
polecenie w odpowiedzi lcpriani za pomocą tego skryptu:W tym przypadku używamy
runif()
do uzyskania 10 równomiernie rozmieszczonych liczb losowych od 12 do 27. Podobniernorm()
, jak użyliśmy powyżej, funkcja zwraca wartości zmiennoprzecinkowe, więc musimyround()
zapisać je do najbliższej liczby całkowitej przed zapisaniem ich na ekranie.R ma również bogaty zestaw dodatków w CRAN , repozytorium pakietów wzorowanym na CPAN Perla. Jednym, który może Cię zainteresować, jest po prostu nazywany random , który działa jako interfejs do random.org , usługi zwracającej prawdziwe liczby losowe generowane z hałasu atmosferycznego.
R jest kompletnym środowiskiem programistycznym, więc może się okazać, że tak naprawdę nie musisz wyciągać liczb z R w formacie tekstowym. Możesz być w stanie rozwiązać swój problem całkowicie w R. Daj mu szansę.
źródło
jot
powyższej odpowiedzi dodałem informacje o naśladowaniu polecenia lcpriani . Jeśli chodzi o wartości granicznernorm()
, nie działa to w taki sposób, jak rozkład normalny. Jeśli weźmiesz domyślną średnią 0 i SD 1, to 1000 jest wciąż możliwą wartością zwrotną, jest to po prostu bardzo mało prawdopodobne. R pozwoli ci napisać coś, co zablokuje wartości, aby usunąć rzeczy poza podanym zakresem, ale wtedy prawdopodobnie niewłaściwie użyjesz rozkładu normalnego.