提问人:Jacque leGrande 提问时间:7/31/2023 更新时间:7/31/2023 访问量:19
如何生成比 Python random() 通常生成的更细粒度的浮点数
how to generate more fine-grained floats than normally generated by Python random()
问:
我需要生成数百万个随机均匀分布的数字。
我在 https://docs.python.org/3/library/random.html 年尝试了聪明的配方 (FullRandom) 来生成更高精度(或更细粒度)的随机数——但它相对较慢。如果我使用我的 GPU,我可以使用 cupy.random.random 生成大约 45 倍的随机数——但它们没有那么细粒度。(我无法将 FullRandom 转换为在 GPU 上运行,因为没有 getrandbits() 的等价物——我修修补了一下,但没有成功。
所以我认为这可能是一个合理的技巧,可以在铜色浮子中获得一些更细的颗粒尺寸。调用 FullRandom 一次,然后将其添加到由 cupy.random.random 生成的数组中,然后进行规范化。
for i in range(large_integer):
fine_grain = FullRandom.random()
agpu = cupy.random.random(another_large_integer, dtype='float64')
agpu += fine_grain
agpu = agpu % 1.0000000000
do stuff .......
问题:我是在浪费时间吗?加法和取模是否只是将数字向下舍入,以便我得到与 cupy.random.random() 生成的浮点数相同的“粒度”?
提前感谢您的帮助。
答: 暂无答案
评论