在Cython中生成一个介于[0,1]
之间的随机数,最有效和可移植的方法是什么?其中一种方法是使用C库中的INT_MAX
和rand()
函数:
from libc.stdlib cimport rand
cdef extern from "limits.h":
int INT_MAX
cdef float randnum = rand() / float(INT_MAX)
这种使用方式是否可行呢?我注意到它与Python的最大整数常量相比差异很大:
import sys
print INT_MAX
print sys.maxint
产生:2147483647 (C max int)
9223372036854775807 (python max int)
如何确定rand()
的正确“规范化”数?编辑另外,如果使用从libc调用rand()
的C方法,如何设置随机种子(例如基于当前时间种子)?
1.0
? - phs