gpt4 book ai didi

java - 模拟加权随机数 - Java

转载 作者:行者123 更新时间:2023-11-30 07:03:01 24 4
gpt4 key购买 nike

我查看了多篇堆栈溢出文章,但找不到合理的回应。如有重复请注明。

我有一个项目列表。像这样的东西:

String giantRat []={"Bandage", "Healing Potion", "Minor Healing Potion", "Rat Teeth", "Fur", "Rat Tail", ""};

这表示此 giantRat 可能掉落的元素。

有一个具有匹配索引的相关数组,其中包含我希望发生的加权概率。像这样的东西:

int giantRatDropRate[]={1,1,1,6,8,3,5};

这些会按比例放大到 50(每个乘以 2),然后理论上我会掷一个 50 面的骰子(随机)。这似乎是错误的方法,我想不出办法来做到这一点。

同样,我们的想法是掷骰子并根据权重从列表中选择 1 项。也许掷骰子的方式是错误的。任何帮助表示赞赏。

最佳答案

使用 Random.nextInt(n),其中 n 是您的权重之和;然后,根据结果int下降的时间间隔,确定item;例如如果为 0 - 取第一项;如果它介于 3 和 8(含)之间 - 取第四项。

您可以轻松地将权重数组转换为区间边界数组:只需对所有前面的元素求和即可。然后,有了随机整数,只需遍历这个区间边界数组,并在随机整数变得大于数组的当前元素时停止。

由于区间的长度由权重决定,概率也由它决定。

关于java - 模拟加权随机数 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28660401/

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