Jaki jest najbardziej wydajny i przenośny sposób generowania losowego losowego w [0,1]
w Cython? Jednym ze sposobów jest użycie INT_MAX
i rand()
z biblioteki C:Prawidłowy sposób generowania liczb losowych w Cython?
from libc.stdlib cimport rand
cdef extern from "limits.h":
int INT_MAX
cdef float randnum = rand()/float(INT_MAX)
Czy można używać INT_MAX
w ten sposób? Zauważyłem, że jest zupełnie inny od stałej można uzyskać z Pythona max int:
import sys
print INT_MAX
print sys.maxint
plony:
2147483647 (C max int)
9223372036854775807 (python max int)
Która jest właściwa „normalizacja” numer na rand()
? EDIT dodatkowo, w jaki sposób można ustawić losowy materiał siewny (np. Zaszczepić w oparciu o bieżący czas), jeśli używa się metody C wywoływania rand()
z biblioteki libc?
Czy właśnie próbowałeś pobrać maksimum i minimum kilku tysięcy próbek i zobaczyć, który współczynnik skalowania zbliża się do wartości "1.0"? – phs
Proszę uważać "[rand() za szkodliwe] (https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful)" –