gpt4 book ai didi

java - 游戏中的 Random 与 SecureRandom

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

我制作了一个旧版风险棋盘游戏。我正在使用 java.util.Random 来实现军队互相攻击时的骰子掷骰。例如,当 3 个军队攻击一个有 2 个军队的领土时,我总共必须“滚动”5 个死亡:

Attacker rolls: 3 die
Defender rolls: 2 die

int[] rollsAttacker = new int[3];
int[] rollsDefender = new int[2];

for (int i = 0; i < 3; i++) {
rollsAttacker[i] = mRandom.nextInt(6) + 1;
}
for (int i = 0; i < 2; i++) {
rollsDefender[i] = mRandom.nextInt(6) + 1;
}

// compare rolls and figure out who won...
// ...

我收到异常多的投诉,提示“不高兴”太多了。例如,100 人的军队可能会输给 2 人的军队。我已经运行我的滚动方法数百万次来测试输赢比率,它们几乎与其他做同样事情的网站所显示的完全匹配。

我正在考虑切换到可能“更随机”的 SecureRandom,但不知道是否值得。我不知道 util.Random 可能会进入什么状态以如此频繁地产生这种干扰。用户可以在移动设备上玩,那么 util.Random 的实现是否有可能在某些平台上产生较小的差异? (投诉似乎确实来自特定品牌的手机)。

简而言之,我不确定切换到 SecureRandom 是否对我的情况有帮助,它是否慢得多,或者我是否没有正确使用 util.Random,

------------更新----------------

4 对 1 攻击的示例,其中防御者总体获胜。

Attacking 4 vs 1...
Roll:
a: 5, 5, 4
d: 6
Roll:
a: 5, 2
d: 5
Roll:
a: 3
d: 5

Defender survived!

对于上述 4 对 1 攻击,我尝试以 20,000 次为一组运行我的攻击方法,并且攻击者获胜的概率为 91%。这远低于该游戏维基百科页面上公布的 97% 胜率:

odds from Wikipedia

哎呀。

--------更新(再次)------------

实际上,我无意中看到了后面一个位置的图表,我的数字与图表的内容一致:

0.4139    0.7502    0.9132    0.97245   0.99015   0.9964    0.9991    0.99975   0.9999    1.0       
0.10865 0.36105 0.649 0.78555 0.8924 0.9343 0.9691 0.98 0.9904 0.9951
0.02655 0.2065 0.4729 0.6414 0.76725 0.8584 0.9121 0.94605 0.9687 0.982
0.00665 0.0905 0.3182 0.48215 0.63985 0.7432 0.8304 0.8894 0.9274 0.9525
0.0015 0.04775 0.20575 0.35955 0.50885 0.64125 0.7389 0.8168 0.8753 0.9164
5.5E-4 0.0229 0.1323 0.25105 0.39385 0.52695 0.6436 0.7254 0.805 0.86415
0.0 0.00975 0.0854 0.18075 0.29985 0.42645 0.5389 0.64695 0.72615 0.8009
5.0E-5 0.00545 0.05515 0.1255 0.2228 0.3307 0.4438 0.54365 0.64505 0.723
0.0 0.00255 0.03225 0.0877 0.16005 0.2576 0.3519 0.46685 0.559 0.6445
0.0 0.00125 0.0201 0.0569 0.11595 0.19315 0.2898 0.374 0.47505 0.56275

所以是的,我不确定我能告诉用户什么,除了可能会发生困惑。

最佳答案

一支 100 人的军队(最少总掷骰数 100)怎么会输给一支 2 人的军队(最多总掷骰数 12)?确实,您确定您的逻辑进一步正确吗?

FWIW 您发布的片段看起来不错,我无法想象 Random 在发行版中的微小缺点会产生可衡量的差异。

关于java - 游戏中的 Random 与 SecureRandom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302362/

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