楼主: qaz111qaz
2136 1

VC 用来产生随机数的函数 rand() 好象有问题 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

高中生

67%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
200 点
帖子
22
精华
0
在线时间
14 小时
注册时间
2011-6-18
最后登录
2012-5-19

楼主
qaz111qaz 发表于 2011-9-17 01:08:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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() 函数有问题?



二维码

扫码加我 拉你入群

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

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

关键词:rand RAN 随机数 伪随机数 time

回帖推荐

jiaolongzjd 发表于2楼  查看完整内容

伪随机

本帖被以下文库推荐

沙发
jiaolongzjd 在职认证  发表于 2013-4-16 16:47:33
伪随机
已有 1 人评分经验 收起 理由
我的素质低 + 100 精彩帖子

总评分: 经验 + 100   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 01:56