這是應該擲6骰子,並保持多少是唯一的記錄。例如:1 2 3 4 5 6 = 6個唯一編號,1 1 1 1 1 1 = 1個唯一編號,1 2 3 3 3 3 = 3個唯一編號。每擲出一個骰子,我都會得到非常均勻的百分比,大約爲16.7%。爲什麼這些投擲骰子的結果如此平均?
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int numberGenerator()
{
int x = (rand() % 6) + 1;
return x;
}
int diceCounter()
{
int counter[6] = {0,0,0,0,0,0};
for (int i = 0; i < 6; i++)
{
int k = numberGenerator();
if (k == 1)
counter[0] = 1;
if (k == 2)
counter[1] = 1;
if (k == 3)
counter[2] = 1;
if (k == 4)
counter[3] = 1;
if (k == 5)
counter[4] = 1;
if (k == 6)
counter[5] = 1;
}
return counter[0]+counter[1]+counter[2]+counter[3]+counter[4]+counter[5];
} // returns how many unique numbers were rolled
int main()
{
srand(time(NULL));
cout << diceCounter() << endl;
int a1 = 0;
int a2 = 0;
int a3 = 0;
int a4 = 0;
int a5 = 0;
int a6 = 0;
int p;
for (int j = 0; j < 1000000; j++)
{
p = numberGenerator(); // for number of unique numbers, it adds +1 to counter
if (p == 1)
a1 += 1;
if (p == 2)
a2 += 1;
if (p == 3)
a3 += 1;
if (p == 4)
a4 += 1;
if (p == 5)
a5 += 1;
if (p == 6)
a6 += 1;
}
cout << "1 ==> " << (a1/1000000.0)*100 << "%" << endl;
cout << "2 ==> " << (a2/1000000.0)*100 << "%" << endl;
cout << "3 ==> " << (a3/1000000.0)*100 << "%" << endl;
cout << "4 ==> " << (a4/1000000.0)*100 << "%" << endl;
cout << "5 ==> " << (a5/1000000.0)*100 << "%" << endl;
cout << "6 ==> " << (a6/1000000.0)*100 << "%" << endl;
// this results in uniform 16.7% percentages
}
大數定律? – WiSaGaN 2013-02-28 01:24:29
但它應該是一個非常低的%爲1或6個唯一的數字,而不是3或4 – Foxic 2013-02-28 01:25:47