c语言中的随机数种子

看了n多关于种子的介绍,可是还不明白,,,两年都没明白。。。难道没有人能用通俗的比喻说清这个问题吗,,希望高手帮助。。。#include<stdlib.h>#includ... 看了n多关于种子的介绍,可是还不明白,,,两年都没明白。。。难道没有人能用通俗的比喻说清这个问题吗,,希望高手帮助。。。
#include <stdlib.h>

#include <stdio.h>

#include <time.h>

int main(void)

{

int i;

time_t t;

srand((unsigned) time(&t));

printf("Ten random numbers from 0 to 99\n\n");

for (i=0; i<10; i++)

printf("%d\n", rand()%100);

return 0;

}
函数srand,这个函数是给随机数产生一个随机种子(seed),函数原型是srand( (unsigned) time(NULL));

time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同
随机种子和随机数到底是什么关系(希望高手打比喻说明,直接说的我肯定不懂)?????????????
由于rand产生的随机数从0到rand_max,而rand_max是一个很大的数,那么如何产生从X~Y的数呢?

从X到Y,有Y-X+1个数,所以要产生从X到Y的数,只需要这样写:

k=rand()%(Y-X+1)+X;这个试子我也不懂,,,rand()%Y+1能代表什么???????????????
最后20分全用了啊,希望高手指点迷津。。。。。。。。。。
for我知道了,不知道的是为什么rand()要除以100
展开
 我来答
tonydwr
推荐于2017-11-22 · TA获得超过369个赞
知道答主
回答量:177
采纳率:0%
帮助的人:91.5万
展开全部
首先告诉你随机数种子是什么东东.
电脑不是人,不能随便就凭空想象一个数字出来。所谓的随机数,不过是通过一个函数经过计算出来的数字而已。 因此,随机数不过是函数计算出来的值,而一个函数要得到这个值Y,肯定需要一个输入X,所以X就是那个种子。
简单点说 Y = function(x);
随机数=Y,随机数种子=X。
第二,rand()%Y+1是什么意思。 首先你要弄懂%是什么意思,是取余运算。
举个例子 10 % 3 = 1 10 % 5 = 0;就是得到余数。
余数的范围永远是从 0到被除数-1 不可能等于被除数。
所以rand()%Y的意思就是 得到一个随机数,这个随机数的范围是从0到Y-1
再加1当然就是把这个随机数的范围确定在0到Y之间了
一般rand()%某数 都是用来指定取某个范围内的随机数的

这个for循环不过就是取打印10个0-99之间的随机数而已..

如果还不明白hi我
silvernii
2009-09-05 · TA获得超过3638个赞
知道大有可为答主
回答量:1667
采纳率:0%
帮助的人:1632万
展开全部
%是取模运算,不是除法运算,a%b的结果是a除以b以后得到的余数
a%b以后,余数肯定在[0,b-1]的范围里
因此rand()%(Y-X+1)的结果在[0,Y-X]的范围里,再加X以后,就在[X,Y]这个范围里,所以要产生X到Y范围里的数,用rand()%(Y-X+1)+X
rand()%100的结果是在[0,99]里,也可以理解成rand()%(99-0+1)+0

随机数是依靠一个复杂的数学函数f(x)来生成的,给它一个初始值(种子)x,那么就可以得到一个数f(x),然后利用f(x)又可以得到另外一个数f(f(x)),如此反复,就可以得到很多的数,这些数是多少,我们是无法控制的,但是我们能让最终的结果限定在某个范围内,利用%运算就可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式