gpt4 book ai didi

algorithm - 为 RPG 游戏生成随机数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:44:41 26 4
gpt4 key购买 nike

我想知道是否有一种算法可以生成很可能在从最小值到最大值范围内较低的随机数。例如,如果您生成一个介于 1 和 100 之间的随机数,如果您使用 f(min: 1, max: 100, avg: 30) 调用该函数,则大多数情况下它应该低于 30,但是如果你用 f(min: 1, max: 200, avg: 10) 调用它,平均应该是 10。很多游戏都这样做,但我就是找不到办法用公式来做到这一点。我见过的大多数示例都使用“drop table”或类似的东西。

我想出了一个相当简单的方法来衡量掷骰子的结果,但它不是很有效,而且你没有太多的控制权

var pseudoRand = function(min, max, n) {
if (n > 0) {
return pseudoRand(min, Math.random() * (max - min) + min, n - 1)
}

return max;
}

rands = []
for (var i = 0; i < 20000; i++) {
rands.push(pseudoRand(0, 100, 1))
}

avg = rands.reduce(function(x, y) { return x + y } ) / rands.length
console.log(avg); // ~50

该函数简单地在最小值和最大值之间选择一个随机数 N 次,每次迭代都会用最后一次滚动更新最大值。因此,如果您使用 N = 2 和 max = 100 调用它,那么它必须连续两次滚动 100 才能返回 100

我看过维基百科上的一些发行版,但我不太了解它们,不知道如何控制最小和最大输出等。

非常欢迎任何帮助

最佳答案

生成具有给定分布的随机数的一种简单方法是从列表中选择一个随机数,其中应该更频繁出现的数字根据所需的分布重复。

例如,如果您创建一个列表 [1,1,1,2,2,2,3,3,3,4]并从 0 中选择一个随机索引至 9从该列表中选择一个元素,您将获得一个数字 <4有 90% 的可能性。

或者,使用上面示例中的分布,生成一个数组 [2,5,8,9]并从 0 中选择一个随机整数至 9 , 如果它是 ≤2 (这将以 30% 的概率发生)然后返回 1,如果它是 >2≤5 (这也会以 30% 的概率发生) return 2

此处解释:https://softwareengineering.stackexchange.com/a/150618

关于algorithm - 为 RPG 游戏生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38411663/

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