标准均匀距离到离散均匀 [a, b]
我一生都无法记住或找到将标准均匀分布转换为范围为 [a, b] 的离散均匀分布的公式。我正在寻找的具体是一个离散均匀随机数生成器,它产生 [a, b] 范围内的数字,我需要它是 Math.random() 的函数,其中 Math.random() 是连续均匀的范围为 [0, 1) 的分布
如果您知道这种转换,我将非常感谢您的帮助。
谢谢,
汤姆
I can not for the life of me remember or find the formula for transforming the standard uniform distribution to a discrete uniform distribution with a range of [a, b]. What I'm looking for specifically is a discrete uniform random number generator that produces numbers in the range of [a, b] and I need it to be a function of Math.random() where Math.random() is a continuous uniform distribution with a range of [0, 1)
If you know that transformation I would greatly appreciate your help.
Thanks,
Tom
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我看来,您想要 [0, 1] 到 [a, b] 的 仿射变换 ]。
因此,如果 x 位于 [0,1] 中,您需要将其转换为 a + x × (b - a) ,然后对结果进行舍入。您需要舍入而不是简单地进行投射,否则您的分布会稍微倾斜。
可以通过在铸造前添加 0.5 来进行铸造舍入。
It looks to me like you want an affine transformation of [0, 1] to [a, b].
So where
x
is in [0,1] you'd want to transform it toa + x × (b - a)
then round the result. You need to round and not to simply cast or your distribution will be slightly skewed.Rounding with a cast can be done by adding 0.5 before casting.