使用近似值生成均匀分布的位

罗德里格斯

我正在尝试使用random.uniform而不是random.getrandbits生成50或50的机会的0或1。

这就是我所拥有的

0 if random.uniform(0, 1e-323) == 0.0 else 1

但是,如果我运行了足够长的时间,则平均值约为70%以生成1。如下所示:

sum(0 if random.uniform(0, 1e-323) == 0.0 
    else 1 
    for _ in xrange(1000)) / 1000.0  # --> 0.737

如果将其更改为1e-324,它将始终为0。如果将其更改为1e-322,则平均值为〜%90。

我做了一个肮脏的程序,试图通过将其除以并乘以几次来找到1e-322和1e-324之间的最佳点:

v = 1e-323
n_runs = 100000
target = n_runs/2

result = 0
while True:
    result = sum(0 if random.uniform(0, v) == 0.0 else 1 for _ in xrange(n_runs))

    if result > target:
        v /= 1.5
    elif result < target:
        v *= 1.5 / 1.4
    else:
        break

print v

这最终与 4.94065645841e-324

但是,如果我运行足够的时间,那仍然是错误的。

没有我编写的肮脏脚本,是否可以找到该编号?我知道Python在sys.float_info.min中显示了一个内部最小浮点值,在我的PC中是2.22507385851e-308。但是我看不到如何使用它来解决这个问题。

很抱歉,如果这比一个适当的问题更像是一个难题,但我本人无法回答。

帕斯卡·库克(Pascal Cuoq)

我知道Python在sys.float_info.min中显示了一个内部最小浮点值,在我的PC中是2.22507385851e-308。但是我看不到如何使用它来解决这个问题。

2.22507385851e-308不是最小的正浮点值,而是最小的正标准化浮点值。最小的正浮动值是该值的2 -52倍,即接近5e-324。

2 -52称为“机器epsilon”,通常将浮点类型的“ min”称为一个值,该值是所有可比较值中的最小值(即-inf)或有限值中的最小值(即-max),也不是最小的正值。

然后,您面临的下一个问题是random.uniform该级别的问题并不统一。当您将其传递给归一化的数字时,它可能工作正常,但是,如果传递给它的是最小的正可表示浮点数,则其内部进行的计算可能非常近似,从而导致其行为不同于文档中所述。尽管根据您的“脏脚本”的结果,它似乎可以正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Math.random()生成均匀分布

来自分类Dev

对于均匀分布的4位值的非均匀序列,好的散列函数吗?

来自分类Dev

如何生成均匀分布的整数序列?

来自分类Dev

如何生成均匀分布的整数序列?

来自分类Dev

测量离散值的均匀分布

来自分类Dev

使用C ++中使用均匀实数分布生成的随机数不是真正均匀分布的

来自分类Dev

均匀分布按钮

来自分类Dev

随机均匀分布

来自分类Dev

随机均匀分布

来自分类Dev

使用代码得出概率的近似值

来自分类Dev

使用 cuRand 从均匀分布生成随机整数的正确方法是什么?

来自分类Dev

C ++线程安全的均匀分布随机数生成

来自分类Dev

从均匀分布生成伪随机数

来自分类Dev

在圆角矩形内生成均匀分布的随机位置

来自分类Dev

快速均匀分布随机数生成器

来自分类Dev

生成强连通的,均匀分布的随机有向图

来自分类Dev

在C中生成随机,均匀分布的实数

来自分类Dev

生成范围内均匀分布的数字的列表

来自分类Dev

生成具有非均匀分布的随机整数

来自分类Dev

XSLT将均匀分布的相邻值分组

来自分类Dev

沿矢量线以近似定义的距离获取均匀分布的点

来自分类Dev

如何通过从多个数组中选择h / l值来生成随机均匀分布?

来自分类Dev

衰变的块状均匀分布

来自分类Dev

Python适合均匀分布

来自分类Dev

箱线图均匀分布

来自分类Dev

使用jQuery旋转放置在圆上的均匀分布的元素

来自分类Dev

如何使用网格均匀分布图像链接?

来自分类Dev

使用jQuery旋转放置在圆上的均匀分布的元素

来自分类Dev

在matlab中使用筛选特征,如何使特征均匀分布