作者tropical72 (蓝影)
站内Prob_Solve
标题[问题] 乱数测试问题
时间Fri Mar 18 17:46:13 2011
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:转录至看板 C_and_CPP 03/18 17:46
※ 编辑: tropical72 来自: 180.177.72.67 (03/18 17:48)
1F:→ tkcn:我倒觉得这样的结果非常合理 03/18 18:11
2F:→ tropical72:可以请教 tkcn 版大为何吗?小弟主观的均匀度应是在 03/18 18:12
3F:→ tropical72:0~RAND_MAX 生成完一次之後,才可和之前之数字重覆. 03/18 18:13
4F:→ tropical72:是否我的观念有所误差? 03/18 18:13
5F:→ tkcn:骰子是好的乱数了吧? 但连骰六次有重复数字的机率有多大? 03/18 18:18
6F:→ tkcn:6! / (6^6) 这是不重复的机率,只有 1.5 % 03/18 18:19
7F:→ tropical72:谢谢 tkcn 指教,这部份我再研究.感谢. 03/18 18:46