使用dSFMT进行随机浮动(0,1)

时间:2012-06-21 08:32:34

标签: c random floating-point prng mersenne-twister

这个项目是在Obj-C for iphone。我在这里使用sfmt的双浮点版本:http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/#dSFMT

用当前时间播种dsmft后,我正在呼叫:

r = dsfmt_gv_genrand_close_open()

生成0到1之间的随机浮点数。还有另外两个选项,即:

r = dsfmt_gv_genrand_open_close()
r = dsfmt_gv_genrand_open_open()

我从文件中知道区别在于0或1侧是打开还是关闭,并以数学方式显示:[0,1),(0,1)或(0,1)。

但我不知道这意味着什么,或者用于满足我的需求。我只想要在0和1之间分布最均匀的浮点数。

2 个答案:

答案 0 :(得分:0)

[0,1]表示生成的float可能为0,但从不为1(左侧为封闭区间,右侧为打开区间)

(0,1)表示生成的float可能为1,但从不为0(右侧为关闭区间,左侧为打开区间)

(0,1)表示生成的数字不能为0。

选择哪一个?我假设库编写得很好,所以这三个函数都应该返回一个均匀分布的数字。选择的确切功能完全取决于您要完成的任务。

答案 1 :(得分:0)

谢谢H2CO3。我还为查找此问题的人找到了更多信息:

http://en.wikipedia.org/wiki/Interval_(mathematics

括号表示排除端点,方括号表示包含。

所以,如果我想排除零,但包括1:(0< r< = 1)

我用:

r = dsfmt_gv_genrand_open_close()

是(0,1)