gpt4 book ai didi

javascript - 如何(可能)获取 0 到 255 之间所有均匀分布的浮点值

转载 作者:行者123 更新时间:2023-12-03 07:05:44 28 4
gpt4 key购买 nike

假设下面的 integer 是由 true random number generator 产生的, 并且数字在 0255 之间随机变化。

let integer = 241 // true random number

对于我正在处理的应用程序,我需要将该数字转换为介于 01 之间的 float ,以便看起来更像 的结果Math.random().

所以,

let float = integer/((2**8)-1)

如果 integer 更改为 0 到 255 之间的新随机整数,这会提供其他“质量” float 吗?例如,对于 0–65535 之间的数字请求 Uint16 那么 let float = integer/((2**16)-1) 是一个更好的方法,只是为了更大的品种?

请注意,我这样做的目的不是为了安全、加密或密码学。我只需要添加类似于 Math.random() 的小数位。我使用这些数字插入到使用 Box Müller 的归一化转换中,以创建模拟随机游走。

最佳答案

在 JavaScript 中,数字被实现为具有 53 位有效位精度的二进制 float 格式(更具体地说,是 IEEE 754 的 binary64 格式)。

但是,通过将一个整数乘以或除以一个常数(通常情况下)来生成一个“统一”的 float 通常会留下一些不可能出现的 float ,即使它们位于正确的范围,即使它们可以用有问题的浮点格式表示。有关详细信息,请参阅 F. Goualard,“Generating Random Floating-Point Numbers by Dividing Integers: a Case Study”。

相反,可以执行更复杂的过程来为每个 float 提供预期的发生概率(在浮点格式的限制内),如 I have done, for example .请注意这个过程是多么的重要。另请参阅我对问题的回答:Random floating point double in Inclusive Range

关于javascript - 如何(可能)获取 0 到 255 之间所有均匀分布的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64490916/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com