Каков наиболее эффективный и переносимый способ генерации случайного случайного в [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()
? EDIT, как можно установить случайное семя (например, затраченное на текущее время), если вы используете C-подход вызова rand()
из libc?