Qual è il modo più efficiente e portabile per generare un casuale casuale in [0,1]
in Cython? Un approccio è quello di utilizzare INT_MAX
e rand()
dalla libreria C:Modo corretto per generare numeri casuali in Cython?
from libc.stdlib cimport rand
cdef extern from "limits.h":
int INT_MAX
cdef float randnum = rand()/float(INT_MAX)
E 'OK per utilizzare INT_MAX
in questo modo? Ho notato che è molto diverso dal costante si ottiene da max int di Python:
import sys
print INT_MAX
print sys.maxint
rendimenti:
2147483647 (C max int)
9223372036854775807 (python max int)
Qual è il giusto numero di "normalizzazione" per rand()
? EDIT inoltre, come è possibile impostare il seme casuale (ad esempio, il seeding basato sull'ora corrente) se si utilizza l'approccio C per chiamare rand()
da libc?
Hai appena provato a prendere il massimo e il minimo di qualche migliaio di campioni e vedere quale fattore di scala si avvicina a 1.0? – phs
Si prega di guardare "[rand() considerato dannoso] (https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful)" –