【发布时间】:2013-04-14 19:44:27
【问题描述】:
在 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)
这样使用INT_MAX可以吗?我注意到它与您从 Python 的 max int 获得的常量完全不同:
import sys
print INT_MAX
print sys.maxint
产量:
2147483647 (C max int)
9223372036854775807 (python max int)
rand() 的正确“标准化”编号是哪个? 编辑 另外,如果使用从 libc 调用 rand() 的 C 方法,如何设置随机种子(例如基于当前时间播种)?
【问题讨论】:
-
您是否尝试过获取几千个样本的最大值和最小值,并查看哪个比例因子接近
1.0?
标签: python random numpy cython