免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1439 | 回复: 4
打印 上一主题 下一主题

[函数] 关于产生随机函数 rand()的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-24 11:08 |只看该作者 |倒序浏览
我知道 a + rand() % n 可以产生a到n的整数
但每次产生的都一样,,我又用了 srand( (unsigned)time( NULL ) ); 来取得系统时间来坐产生随机数的SEED。。         
srand((unsigned)time(NULL));   
for (int a=0;a<=25;a++)   
int i= 1+rand()%13;
可以产生25个1-13的随机数  对吧?
我的问题是 如果时间相隔很短
比如 srand((unsigned)time(NULL)); 放在for loop里面
那么产生的25个数是一样的, 如果把循环加大比如250000 那么就可以看到变化了
说明取系统时间来在很短时间内产生多个不同的随机数不行啊
有人有办法吗 在很短的时间内产生多个不同的随机数  是不是和SEED有关?
那么怎么写个SEED  谢谢!!

论坛徽章:
0
2 [报告]
发表于 2004-10-24 11:27 |只看该作者

关于产生随机函数 rand()的问题

你的用法不对。产生1到13之间的随机数不要用rand()%13的形式。具体说明可以看看rand的man文档。

  1. #include        <stdio.h>;
  2. #include        <stdlib.h>;
  3. #include        <time.h>;

  4. int main(){
  5.         int a, i;
  6.        
  7.         srand((unsigned)time(NULL));
  8.        
  9.         for (i=0;i<=25;i++) {
  10.                 a=1+(int) (13.0*rand()/(RAND_MAX+1.0));
  11.                 printf("%d\n",a);
  12.         }
  13. }
复制代码

[/code]

论坛徽章:
0
3 [报告]
发表于 2004-10-24 12:11 |只看该作者

关于产生随机函数 rand()的问题

不管怎样  在很短时间里产生出的数是一样的啊。。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-10-24 13:00 |只看该作者

关于产生随机函数 rand()的问题

to kj501:

a=1+(int) (13.0*rand()/(RAND_MAX+1.0));

为什么写成这种形式较好呢?还真不知道.

论坛徽章:
0
5 [报告]
发表于 2004-10-24 15:33 |只看该作者

关于产生随机函数 rand()的问题

man文档里面有说明。你可以自己看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP