2012-04-24 6 views
2

私は古いリスクボードゲームのバージョンを作った。私はjava.util.Randomを使って、軍隊が互いに攻撃するときにダイスロールを実行します。例えば、3つの軍は2つの軍との領土を攻撃するとき、私は「ロール」には、合計で死ぬ5持っている:ランダムな対ゲームのSecureRandom

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対攻撃20000の実行のバッチで私の攻撃方法を実行しようとしました、そして攻撃者は、時間の91%を獲得。

odds from Wikipedia

なんてこった:これは、このゲームのためのウィキペディアのページに出して97%の勝率よりもはるかに低いです。

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

実は、私が誤って背後チャート1つのスロットを見ていた、私の数字は何をラインアップグラフには次のものがあります。

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  

だから、混乱が起こることを除いて、私がユーザーに伝えることがわからないことがあります。

+0

そして、それらのロールに基づいて勝者はどのように決定されますか?たぶんそれは論理的な欠陥です。 –

+5

あなたのロジックは、「ランダム」が「十分にランダム」ではないということよりも問題が多いようです。 –

答えて

2

どのようにして100の軍隊(最小合計のロール100)が2の軍隊(最大合計ロール12)に負けることができますか?確かに、あなたのロジックが正しいということは確かですか?

FWIWあなたが投稿したスニペットはうまく見えますが、私は想像することができません。Randomのディストリビューションには小さな欠点があり、大きな違いはありません。

+0

多分、私はルールを誤解しています.100対1のシナリオに単純化しましょう。私は攻撃者が戦う可能性のある最大のダイスが3であり、ディフェンダー2と思った.100対1の戦いで、攻撃ごとに6を回すならば、防御側は完全に攻撃側を倒すことができるだろうか? – user291701

+0

なぜ私は "危険"のゲームを嫌い:ルールは、100対1のシナリオでも、攻撃軍は100ダイスではなく最大3サイコロを回すことができると言う。軍隊あたり1つの死者が最大3人までです。 –

+0

@Stephen、危険にさらされている場合、攻撃者が3つの軍隊を持っている場合、ロールできるサイコロの最大数は2です。 – GriffeyDog

関連する問題