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 展开
#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 展开
2个回答
展开全部
首先告诉你随机数种子是什么东东.
电脑不是人,不能随便就凭空想象一个数字出来。所谓的随机数,不过是通过一个函数经过计算出来的数字而已。 因此,随机数不过是函数计算出来的值,而一个函数要得到这个值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我
电脑不是人,不能随便就凭空想象一个数字出来。所谓的随机数,不过是通过一个函数经过计算出来的数字而已。 因此,随机数不过是函数计算出来的值,而一个函数要得到这个值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我
展开全部
%是取模运算,不是除法运算,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)),如此反复,就可以得到很多的数,这些数是多少,我们是无法控制的,但是我们能让最终的结果限定在某个范围内,利用%运算就可以
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)),如此反复,就可以得到很多的数,这些数是多少,我们是无法控制的,但是我们能让最终的结果限定在某个范围内,利用%运算就可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询