重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
rand()函数产生随机数的原理···不清楚。但是他是一个#includestdlib.h
成都创新互联-专业网站定制、快速模板网站建设、高性价比康平网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式康平网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖康平地区。费用合理售后完善,10年实体公司更值得信赖。
里的函数。
他的范围是0-RAND_MAX....这个值不小于32767(这是ANSI标准规定的)
提到这个,顺便帮楼主提一下。这个是伪随机数。
也就是一旦你运行过后,你每次得到的那组随机数肯定是一样的。。
这也就是伪所在。他的单次是随机(单次不是指单个,是指你单次编译,也就是你下次再运行这个程序,结果是一样的,没有真正随机)
一般用于取范围内随机数。
rand()%a;
比如取100以内的随机数
rand()%100;
或者骰子的时候取6
rand()%6.模拟每次得到的点数··
还有发牌。多用于赌博模拟中。
这时就引进另一个srand();
有了这个。才能保存rand()每次真正的随机性能。
一般这个的用法,现在用得比较多的是用电脑的时间 做值
也就是srand(time(NULL);
然后后面你得到的rand()每次运行结果就不一样了。
这个要加个头文件#includetime.h
要还 不清楚就hi我
rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a) 功能是初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过sand()函数,我们是可以产生可以预见的随机序列,那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列,利用srand((unsign)(time(NULL))是一种方法。
rand();函数产生的是伪随机,如果不用srand();提供种子,那他每次的随机数都是一样;可以这样设置种子:srand( (int)time(NULL) );\\用时间来做种子,这样每次用rand();产生的随机数就不一样了。
rand()是表示产生随机数的一种函数,多应用于循环语句当中进行判断。
比如说n=rand();
switch(n)
{case1.......
case2......}
这些都是都可能被执行的,因为数字是随机的。
扩展资料:
注意
rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种了,为基准以某个递推公式推算出来的一系数,
当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a) ,
功能是初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过sand()函数,可以产生可以预见的随机序列。
参考资料来源:rand函数-百度百科
rand
和random都是伪随机函数,一般直接读取时间来做种子(sand(time))的也是不怎能随机的
我给你一个我以前写的,真正的随机:
int
myrand(void)
{
int
seed
;
asm
("rdtsc"
:
"=A"
(seed))
;
srand((unsigned
int)seed);
return
rand();
}