나는 오래된 위험 보드 게임 버전을 만들었습니다. 나는 군대가 서로 공격 할 때 주사위 굴리기를 구현하기 위해 java.util.Random
을 사용하고 있습니다.랜덤 대 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...
// ...
내가 너무 많은 "전복"가 있다는 불만의 비정상적으로 높은 숫자를 받고 있어요 : 3 군대는 두 개의 군대와 영토를 공격 할 때 예를 들어, 나는에 "롤"5 총 다이있다. 예를 들어, 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 대 공격 만 실행의 일괄 내 공격 방법을 실행하려고했습니다, 그리고 공격자가 시간의 91 %를 이긴다. 이것은이 게임의 위키 백과 페이지에 넣어 97 %의 성공률보다 훨씬 낮은 :
아아. (다시)
------ 업데이트 ------------- 사실
, 내 번호는 무엇으로 정렬, 실수로 하나 개의 슬롯 뒤에 차트를보고 있었다 차트가 있습니다
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
그래서 그래 내가 이변이 일어날 수 있다는 점을 제외하고 사용자가 무엇을 말할 수 확실하지.
그런 다음 모든 롤을 기반으로 승자가 결정됩니까? 어쩌면 그것은 논리 결함 일 수 있습니다. –
당신의 논리가 "랜덤 (Random)"이 "충분히 랜덤 (random)"이 아닌 것보다 문제가 많습니다. –