변화하는 수의 6면 다이 롤의 확률 분포를 계산하려고합니다. 예를 들어, 다음과 같이 3D6은 3 내지 18의 범위 :6 면체 주사위로 확률 분포 계산
가function distributionCalc($numberDice,$sides=6) {
for ($i=0; $i<pow($sides,$numberDice); $i++)
{
$sum=0;
for ($j=0; $j<$numberDice; $j++)
{ $sum+=(1+(floor($i/pow($sides,$j))) % $sides); }
$distribution[$sum]++;
}
return $distribution;
}
용 루프 내측 $의 J는 바닥 마법을 사용하여 그것을 계산이 PHP 프로그램을 작성
3:1, 4:3, 5:6, 6:10, 7:15, 8:21, 9:25, 10:27, 11:27, 12:25, 13:21, 14:15, 15:10, 16:6, 17:3, 18:1
주사위의 개수 인 숫자의 개수와베이스 -6- 계산 시퀀스를 생성하는 계수
함수이므로 3D6는 회수는 :
111,112,113,114,115,116,121,122,123,124,125,126,131,etc.
함수는 각각의 합계를 취하므로, 3,4,5,6,7,8,4,5,6,7,8,9,5 등으로 읽습니다. 6^3 개의 가능한 결과를 모두 거쳐 3과 18 사이의 $ 분배 배열에있는 해당 슬롯에 1을 더합니다. 매우 직설적입니다. 그러나 그것은 약 8d6까지만 작동하며, 이후 수십억 개의 계산을 수행하기 때문에 서버 시간 초과가 발생합니다.
그러나 나는 확률이 감미로운 종 곡선 분포를 따르기 때문에 필요하지 않다고 생각합니다. 숫자를 건너 뛰고 커브 자체로 곧바로 갈 수있는 방법이 있는지 궁금합니다. 예를 들어, 80d6 (범위 : 80-480)과 같이이를 수행 할 수있는 방법이 있습니까? 6^80 계산을하지 않고도 분포를 투사 할 수 있습니까?
나는 전문 코더가 아니며 확률은 여전히 나에게 새로운 것이므로 모든 도움에 감사드립니다!
스티븐
이항 분포는 다이 롤의 * sum *을 모델링 할 수 없으며 개별 결과 만 표시합니다 (예 : 40 개의 주사위를 굴릴 경우 몇 개의 롤이 나올지) – rlbond