精華(代碼)只有 這幾句:
```
// do {
Continue220:
++intShootN; //(多)射一次;
inRand = rand() % inCoun; //有多少張信用卡,就射擊出多少 數字(范圍
Aa[inRand] += 1; // 相應的(編號的)信用卡,消費次數加+1;
if (intShootN < inCoun) goto Continue220; //射擊次數 <小于 信用卡 張數, 那必須 繼續(重復)射擊;
//檢查是否所有信用卡都消費過了:
for (int j = 0; j < inCoun; ++j) {//for220j
if (0 == Aa[j]) goto Continue220; //有一張卡沒消費過,那么就 (重復循環)再次射擊(消費)去
}//for220j
//到這說明 編號 1~編號 inCoun的信用卡 都消費過了
ArrCount[ii] = intShootN; //至此,得到了,消費過所有 信用卡后 的 射擊次數;;把(本局)射擊(消費的次數)記錄到數組里,便于后面統計
goto MeiZhang_Xinyongka_dou_xiaoFei_guoLe440; //每個、每張信用卡 都 消費過了!
```
```
// 21sixCreaditConA210701.cpp : 此文件包含 "main" 函數。程序執行將在此處開始并結束。//
#include <iostream>
#define Min2 2
#define MaxCardNum10 20
//2
#define M1000 10000 //一共有多少組消費者, 多少局信用卡消費 (組織
double ArrStatisticFrequency[MaxCardNum10];
int ArrSF_min[MaxCardNum10];
unsigned long int ArrSF_Max[MaxCardNum10];
unsigned int intCountNum = 0;
unsigned int Aa[M1000];
unsigned int ArrCount[M1000];
int main()
{
{//110
std::cout << std::endl;
//
for (int inCoun = Min2; inCoun <= MaxCardNum10; ++inCoun) {//for220inCoun //inCoun是這一次(循環)信用卡的張數……從2張卡到 MaxCardNum10
//
//
ArrSF_min[inCoun] = M1000;
ArrSF_Max[inCoun] = 0;
//
{
int intShootN = 0; //最重要的統計變量:射光信用卡的射擊次數; 這個intShootN記錄射擊的 第intShootN 次(次數;
//射擊測試Start:
for (int ii = 0; ii < M1000; ++ii) {//for110ii //每組信用卡都 測試 M1000 次 Start:
//初始化信用卡:
for (int i = 0; i <= inCoun; ++i) { Aa[i] = 0; } //i < MaxCardNum10; ++i) { Aa[i] = 0; } //或 for(int i=0;i<=inCoun 也就 可以了!
//初始化信用卡End;
//用 do 反復 射擊或消費:
int inRand = 0;
intShootN = 0;
// do {
Continue220:
++intShootN; //(多)射一次;
inRand = rand() % inCoun; //有多少張信用卡,就射擊出多少 數字(范圍
Aa[inRand] += 1; // 相應的(編號的)信用卡,消費次數加+1;
if (intShootN < inCoun) goto Continue220; //射擊次數 <小于 信用卡 張數, 那必須 繼續(重復)射擊;
//檢查是否所有信用卡都消費過了:
for (int j = 0; j < inCoun; ++j) {//for220j
if (0 == Aa[j]) goto Continue220; //有一張卡沒消費過,那么就 (重復循環)再次射擊(消費)去
}//for220j
//到這說明 編號 1~編號 inCoun的信用卡 都消費過了
ArrCount[ii] = intShootN; //至此,得到了,消費過所有 信用卡后 的 射擊次數;;把(本局)射擊(消費的次數)記錄到數組里,便于后面統計
goto MeiZhang_Xinyongka_dou_xiaoFei_guoLe440; //每個、每張信用卡 都 消費過了!
// } while (true);//
MeiZhang_Xinyongka_dou_xiaoFei_guoLe440: //
;
//
}//for110ii //每組信用卡都 測試 M1000 次_End
//射擊測試End;
//
//統計平均射擊次數(在 inCoun 張信用卡的 實驗中:
unsigned long int uliTotal = 0;
double doubTotal = 0.0;
for (int ii = 0; ii < M1000; ++ii) {//for2200ii
//
uliTotal += (unsigned long int)ArrCount[ii];
doubTotal += (double)ArrCount[ii];
if (ArrCount[ii] < ArrSF_min[inCoun]) { ArrSF_min[inCoun] = ArrCount[ii]; }
if (ArrCount[ii] > ArrSF_Max[inCoun]) { ArrSF_Max[inCoun] = ArrCount[ii]; }
// std::cout << "[" << ii << "i:" << ArrCount[ii] << "]; ";
//
}//for2200ii
//統計完 doubTotal , 求平均值
double averag_Total = 0.0;
averag_Total = doubTotal / M1000;
averag_Total = (double)uliTotal / (double)M1000;
//
ArrStatisticFrequency[inCoun] = averag_Total;
double averag02 = 0.0;
for (int i = 1; i <= inCoun;++i) {
averag02 += (1.0/(double)i) *inCoun;
}
std::cout << "[CardNums:" << inCoun << ",AverQiWang:" << averag_Total << "),";
std::cout << "minNum:" << ArrSF_min[inCoun];
std::cout << ", Maxnum:" << ArrSF_Max[inCoun];
std::cout<<"; Averag:"<<averag02 << std::endl;
//
}
//
//
}//for220inCoun
}//110
std::cout << "Hello World!_End!!\n";
}//
```