Правильный способ генерации случайных чисел в Cython?
Какой самый эффективный и портативный способ генерировать случайное случайное число в[0,1]
в Cython? Один подход заключается в использованииINT_MAX
а такжеrand()
из библиотеки C:
from libc.stdlib cimport rand
cdef extern from "limits.h":
int INT_MAX
cdef float randnum = rand() / float(INT_MAX)
Можно ли использоватьINT_MAX
таким образом? Я заметил, что это сильно отличается от константы, которую вы получаете из Python max int:
import sys
print INT_MAX
print sys.maxint
выходы:
2147483647 (C max int)
9223372036854775807 (python max int)
Какой правильный номер "нормализации" дляrand()
? РЕДАКТИРОВАТЬ кроме того, как можно установить случайное начальное число (например, посеянное на основе текущего времени), если кто-либо использует подход вызова на языке Crand()
из libc?