免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6027 | 回复: 4

[C] 请教random和srandom的一个问题 [复制链接]

论坛徽章:
0
发表于 2009-02-14 18:58 |显示全部楼层
10可用积分
如题,我有下面这样的一个小程序,
#include<stdlib.h>
#include<stdio.h>
int main(void){
  int rand=random();
  int r=random();
  printf("%d %d\n",rand,r);
  return 0;
}
每次输出都是
[zhang@localhost ~]$ ./a.out
1804289383 846930886
我重新编译或者重启,还是这样的输出

请问: random的状态是保存在操作系统里面的? 如果我不srandom设置随机数种子,那么random的结果就是一万年不变吗?

谢谢!

最佳答案

查看完整内容

伪随机数产生算法都需要一个种子作为起始计算点,如果程序不设置(即使用算法的默认值),那么输出的随机数序列不会发生变化random的状态应该是用函数的静态局部变量保存的吧(看具体实现了)

论坛徽章:
0
发表于 2009-02-14 18:58 |显示全部楼层
伪随机数产生算法都需要一个种子作为起始计算点,如果程序不设置(即使用算法的默认值),那么输出的随机数序列不会发生变化
random的状态应该是用函数的静态局部变量保存的吧(看具体实现了)

论坛徽章:
0
发表于 2009-02-14 20:08 |显示全部楼层
这个只是为随即函数吧,需要种子初始化的

论坛徽章:
0
发表于 2009-02-14 20:37 |显示全部楼层
原帖由 tyc611 于 2009-2-14 20:01 发表
伪随机数产生算法都需要一个种子作为起始计算点,如果程序不设置(即使用算法的默认值),那么输出的随机数序列不会发生变化
random的状态应该是用函数的静态局部变量保存的吧(看具体实现了)

谢谢ls的指点!

论坛徽章:
0
发表于 2009-02-14 21:37 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP