[問題] 亂數測試問題
※ [本文轉錄自 Prob_Solve 看板 #1DWodeMF ]
os: xp, compiler: vc2008
小弟為測亂數品質(均勻度),使用以下方式記錄亂數出現數字
unsigned char* occ_times = (unsigned char*)malloc(RAND_MAX+1);
memset(occ_times, 0, RAND_MAX+1);
srand((unsigned)time(NULL));
for(i=0; i!=RAND_MAX+1; ++i) ++occ_times[rand()];
不過測出來效果似乎不好, 因去看結果時
unsigned not_cnt_one=0;
for(i=0; i!=RAND_MAX+1); ++i){
if(occ_times[i]!=1) ++not_cnt_one;
}
RAND_MAX = 32767, 出來的 not_cnt_one 高達 20000,
幾乎為 2/3, 而另一測試是測 "多久會開始重覆數字",
理想為 RAND_MAX ,但實際上卻只有 100~400 次不等。
我想內建的 rand() 品質應沒這麼不好吧 ?
故想請教各位有經驗之先進,是否我的測試出了什麼問題?
謝謝各位不吝指教
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.72.67
※ 編輯: tropical72 來自: 180.177.72.67 (03/18 17:47)
推
03/18 18:24, , 1F
03/18 18:24, 1F
→
03/18 18:25, , 2F
03/18 18:25, 2F
→
03/18 18:36, , 3F
03/18 18:36, 3F
→
03/18 18:36, , 4F
03/18 18:36, 4F
→
03/18 19:27, , 5F
03/18 19:27, 5F
→
03/18 19:28, , 6F
03/18 19:28, 6F
→
03/18 19:52, , 7F
03/18 19:52, 7F
推
03/18 20:16, , 8F
03/18 20:16, 8F
→
03/18 20:22, , 9F
03/18 20:22, 9F
→
03/18 20:23, , 10F
03/18 20:23, 10F
→
03/18 20:23, , 11F
03/18 20:23, 11F
推
03/18 20:24, , 12F
03/18 20:24, 12F