0

这个项目在 iphone 的 Obj-C 中。我在这里使用双浮点版本的 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 之间分布最均匀的浮点数。

4

2 回答 2

0

[0, 1) 表示生成的浮点数可能为0,但绝不为1(左侧为闭区间,右侧为开区间)

(0, 1] 表示生成的float可能为1,但绝不为0(右为闭区间,左为开区间)

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

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

于 2012-06-21T08:43:25.513 回答
0

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

http://en.wikipedia.org/wiki/Interval_ (数学)

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

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

我用:

r = dsfmt_gv_genrand_open_close()

这是(0,1]

于 2012-06-22T00:01:20.947 回答