全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件
2103 1
2011-09-17
VC 用来产生随机数的函数 rand() 好象有 bug

用 VC  产生由 1,2 组成的伪随机数序列,序列长度为 30,来看序列中连续出现 1 的最大个数。
比如,有一个序列长度为 30, 由 1,2 组成的伪随机数序列:
1 2 2 1 2 1 1 2 1 1 1 1 1 1 1 1 2 1 1 2 1 2 1 1 1 2 2 1 2 1
则序列中连续出现 1 的最大个数是 8 。

=========================================================================
用 VC 产生一个序列长度为 30, 由 1,2 组成的伪随机数序列的程序为:
int  c[30];
  srand((unsigned)time(NULL));
  for(int i=0;i<=29;i++)
{
  c[ i ]=rand()%(2-1+1)+1;
}

=========================================================================

结果发现:
用 VC 产生 由1,2组成的伪随机数序列, 序列中连续出现 1 的最大个数不会超过 15。 连续出现 1 的最大个数从 2,3,4,。。,15 都会反复出现,但是大于 15 从来就没有出现过。(已验证了数十亿个这样的序列,均如此)


按理,作为随机数序列,连续出现 30 个 1 (即序列的全部元素都是 1)都是可能的,而现在最多只连续出现 15 个 1,是不是 rand() 函数有问题?



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-4-16 16:47:33
伪随机
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群