我正在开发一个基于网络的游戏,我们有多个迷你游戏。我们坚持还要添加一个在赌博界非常流行的 Crash 游戏。然而,我们一直在努力理解生成随机(几乎不可预测)数字的概念。大多数赌博网站都提供哈希等来证明数字未被篡改。我们真的不需要这个,因为我们的游戏不涉及真正的金钱。所以我们只是在寻找一种方法来生成一个(几乎不可预测的)随机数(从 1 开始到无穷大),但它给了我们一点房子优势(1/2%)。
问问题
366 次
1 回答
0
对于(几乎不可预测的)随机数,您可以使用Crypto.getRandomValues()
比默认方法更安全且更随机的Math.random()
方法。
对于一个崩溃游戏,如果你希望崩溃点高于 X 的概率应该是 1/X,你可以使用这个方法:
function getCrashPoint() {
e = 2**32
h = crypto.getRandomValues(new Uint32Array(1))[0]
return Math.floor((100*e-h) / (e-h)) / 100
}
如果要为房屋边缘添加 2%,只需添加一个 if 语句:
function getCrashPoint() {
e = 2**32
h = crypto.getRandomValues(new Uint32Array(1))[0]
// if h % (100 / desired_precentage) is 0 then the game will crash immediately
if (h % 50 == 0) return 1
return Math.floor((100*e-h) / (e-h)) / 100
}
于 2021-05-25T21:58:52.167 回答