gpt4 book ai didi

java - 生成 1 到无穷大之间的随机整数

转载 作者:行者123 更新时间:2023-11-30 09:05:59 24 4
gpt4 key购买 nike

我想创建一个介于 1 和无穷大之间的整数值。我想要一个概率分布,其中数字越小,生成它的机会就越高。

我生成一个介于 0 和 2 之间的随机值 R。

看系列

enter image description here

我想知道我的总和大于 R 的最小 m。

我需要一种快速的方法来确定 m。如果我有二进制的 R,这将非常简单,因为 m 等于我的数字在一行中从最高有效位开始的 1 的数量加一。

此方法可以生成的整数有上限:整数值有上限, double 也只能在 [0;2[ 区间内达到这么高。然而,这无关紧要,因为它取决于数据表示方法的准确性。

确定 m 的最快方法是什么?

最佳答案

设置不等式

R <= 2 - 2**-m

m 分隔术语

2**-m <= 2 - R
-m <= log2(2-R)
m >= -log2(2-R).

所以看起来你想要 ceiling(-log2(2-R))。这基本上是一个离散化的指数分布——指数的算法是 -ln(1-U)/rate,其中 U 是一个 Uniform(0,1) 1/rate 是所需的均值。

关于java - 生成 1 到无穷大之间的随机整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24631122/

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