Mam duży skrypt w Pythonie. Zainspirowałem się w kodzie innych osób, więc do niektórych rzeczy użyłem modułu numpy.random
(na przykład do utworzenia tablicy losowych liczb pobranych z dwumianowej dystrybucji), aw innych miejscach korzystam z modułu random.random
.Różnice między numpy.random i random.random w Pythonie
Czy ktoś może mi powiedzieć główne różnice między tymi dwoma? Patrząc na stronę dokumentu dla każdego z nich wydaje mi się, że numpy.random
ma więcej metod, ale nie jestem pewien, w jaki sposób generowanie liczb losowych jest inne.
Powodem, dla którego pytam, jest to, że muszę wysiać mój główny program w celu debugowania. Ale to nie działa, chyba że używam tego samego generatora liczb losowych we wszystkich modułach, które importuję, czy to prawda?
Ponadto przeczytałem tutaj, w innym poście, dyskusję na temat NIE używania numpy.random.seed()
, ale tak naprawdę nie rozumiem, dlaczego to był taki zły pomysł. Byłbym wdzięczny, gdyby ktoś mi wyjaśnił, dlaczego tak się dzieje.
Jako spokrewniony notatki, to czasami neccesary używać * nie *, ponieważ Twister Mersenne nie produkuje losowe sekwencje entropii wystarczającej dla kryptograficzny (i jakieś niezwykłe naukowe) cele. W tych rzadkich przypadkach często potrzebujesz [Crypto.Random] (https://www.dlitz.net/software/pycrypto/apidoc/Crypto.Random.random-module.html), który jest w stanie używać źródeł entropii specyficznych dla systemu operacyjnego generowanie niedeterministycznych sekwencji losowych o znacznie wyższej jakości, niż jest dostępne z samego 'random.random'. Zwykle tego nie potrzebujesz. – SingleNegationElimination
Dziękuję Hannnele. Twoje spostrzeżenia były bardzo przydatne! Okazuje się, że nie mogę uciec z użyciem TYLKO jednego generatora liczb losowych (który musi być numpy, ponieważ losowe nie generuje rozkładów dwumianowych), ponieważ części mojego programu wywołują inny program, który wykorzystuje losowe. Będę musiał zasiać dwa generatory. – Laura
"Jeśli wiesz, który numer masz teraz, możliwe jest przewidzenie z absolutną pewnością, jaki numer będzie następny." Myślę, że to stwierdzenie może wymagać pewnych wyjaśnień. Chodzi o to, że jeśli znasz * stan wewnętrzny * generatora, możesz odtworzyć sekwencję - co robisz, kiedy wysiejesz generator. Biorąc pod uwagę liczbę wyjść z generatora, nie można przewidzieć następnego numeru. Okres jest tak duży, że prawdopodobnie będziesz potrzebował długiej sekwencji liczb, zanim będziesz mógł obliczyć, gdzie jesteś na sekwencji pseudolosowej, a więc przewidzieć następną. –