免费注册 查看新帖 |

Chinaunix

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

请教:rand()怎么用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-17 19:25 |只看该作者 |倒序浏览
WIN XP    TURBO C 2.0

各位大侠,我用这个程序输出100个0——10之间的随机数,可以吗?
这个rand()到底是怎么用的啊?
会的请指点一下,高手请鄙视,不懂的欢迎灌水,欢迎BT,欢迎YY,欢迎路过,欢迎删帖。


#include <stdlib.h>
#include <conio.h>

main()
{
    int a;
    int i;

    clrscr();
    srand(time(0));
    for (i=1;i<=100;i++)
    {
        a=rand()%10;    /*关键是这里,可以吗?*/
        printf("%5d",a);
        if (i%10==0) printf("\n");
    }
    printf("弹所有人的JJ^___^#");    /*诚心请教*/
}

论坛徽章:
0
2 [报告]
发表于 2006-04-17 19:29 |只看该作者
%10只能输出0-9

论坛徽章:
0
3 [报告]
发表于 2006-04-17 19:35 |只看该作者
这么用基本没有错!
但如果你想输出0-10之间的数,就要用rand()%11

论坛徽章:
0
4 [报告]
发表于 2006-04-17 19:42 |只看该作者
这句会不会不公平?
a=rand()%10
我是说,几个数字出现的概率一样吗?
如果不一样你们沉得这个误差可以接受吗?

论坛徽章:
0
5 [报告]
发表于 2006-04-17 19:58 |只看该作者
没有哪个个库函数可以产生真正意义上的随机数,作为一般的程序设计,以时间作为种子基本就可以了!如果你想获得一个比较理想的随机数,就需要通过数学计算了!但这方面我也不懂,我以前上网查过,但没有找到一个理想的计算公式。

论坛徽章:
0
6 [报告]
发表于 2006-04-17 20:11 |只看该作者
原帖由 fufeiwxy 于 2006-4-17 19:58 发表
没有哪个个库函数可以产生真正意义上的随机数,作为一般的程序设计,以时间作为种子基本就可以了!如果你想获得一个比较理想的随机数,就需要通过数学计算了!但这方面我也不懂,我以前上网查过,但没有找到一个理 ...



不好意思,请问一下,你沉得我这个可以吗?
另外你知道别的比较好的例子吗?谢谢。

论坛徽章:
0
7 [报告]
发表于 2006-04-17 20:31 |只看该作者

回复 1楼 hymailto 的帖子

rand();产生的随机数,实际上是个伪随机数列,每次产生的数列是一样的,你可以验证一下。
srand((unsigned) time(&t)); 以系统时间做种子,初始化rand()(实际上,就是设定从rand()产生的伪随机数列的第几个开始)。这样,因为取得的时间值不一样,那么取数列的开
始位置就不一样,取得的数列组就不同了。

你可以将srand()中的值设定为一个固定值,再试试。

论坛徽章:
0
8 [报告]
发表于 2006-04-17 21:01 |只看该作者
谢谢

论坛徽章:
0
9 [报告]
发表于 2006-04-17 21:32 |只看该作者
感谢大家的热情,我会常来的。谢谢

论坛徽章:
0
10 [报告]
发表于 2006-04-18 09:10 |只看该作者
真正的随即序列只有白噪声

其他都是伪随继续列

包括混沌序列都不是真正的随即
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP