全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件
1161 2
2011-09-15
一个很奇怪的问题

分别用 VC 和 VBA 产生由 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 。


=========================================================================
(a) 用 VC 产生一个序列长度为 30, 由 1,2 组成的伪随机数序列的程序为:

int  c[30];
  srand((unsigned)time(NULL));
  for(int i=0;i<=29;i++)
{
  c=rand()%(2-1+1)+1;
}


=========================================================================
(b) 用 VBA 在 excel 上产生一个序列长度为 30, 由 1,2 组成的伪随机数序列的程序为:

Randomize
For j = 1 To 30 Step 1
Cells(1,j) = Int(2 * Rnd() + 1)
Next j

=========================================================================
结果发现很奇怪的问题:
(1)用 VC 产生序列长度为 30, 由1,2组成的伪随机数序列, 序列中连续出现 1 的最大个数是 15,不会超过 15。(已验证了 10 亿个这样的序列,均如此)
(2)而  VBA 产生序列长度为 30, 由1,2组成的伪随机数序列,序列中连续出现 1 的最大个数很容易就超过 20 (任意每产生 2 千个这样的序列都能达到,已累计验证了 40 亿个这样的序列,均如此),有的甚至可以达到 30。(即 30 个全部是 1)


哪位高手能指点问题究竟出在哪里 ?







二维码

扫码加我 拉你入群

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

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

全部回复
2011-9-15 08:18:51
好久没来了,帮顶
二维码

扫码加我 拉你入群

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

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

2011-9-15 08:39:45
会不会是随机种子的问题??
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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