C语言rand函数的机理 c语言的random函数

C中,rand()是什么意思,有什么作用rand()是C语言中产生随机数的一个函数,但是需要注意的是,产生的是伪随机数 。
rand()用法举例:
产生1到100之间的随机数
#includestdio.h
int
main(){
srand((unsigned)time(NULL));//产生随机数种子
int
rand_num=(rand()%100)+1;//产生1到100直接的随机数
printf("rand_num=%d\n",rand_num);
return
0;
}
代码截图:
扩展资料:
所谓的“伪随机数”指的并不是假的随机数 。其实绝对的随机数只是一种理想状态的随机数,计算机只能生成相对的随机数即伪随机数 。
系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed指定了一个值,那么
rand()就会将seed的值作为产生伪随机数的初始值;
而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始
值 。如果给了一个定值,那么每次rand()产生的随机数序列都是一样的 。
所以为了避免上述情况的发生我们通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来
产生种子 。
如果仍然觉得时间间隔太小 , 可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某个合适的整数 。
例如,srand((unsigned)time(NULL)*10) 。
参考资料:百度百科-rand函数
c语言中rand()函数怎么用?rand函数功能为获取一个伪随机数(伪随机数的概念下面会有介绍) 。
一、函数名:
rand();
二、声明:
int rand();
三、所在头文件:
stdlib.h
四、功能:
返回一个伪随机数 。之所以说是伪随机数 , 是因为在没有其它操作下,每次执行同一个程序,调用rand得到的随机数序列是固定的(不是真正的“随机”) 。
五、为了使rand的结果更“真”一些,也就是令其返回值更具有随机性(不确定性),C语言在stdlib.h中还提供了srand函数,通过该函数可以设置一个随机数种子,一般用当前时间的毫秒数来做参数 。通过time(NULL)可以获取到当前时间的毫秒值(该函数位于time.h)中 。
六、使用rand的流程可以总结为:
1 调用srand(time(NULL))设置随机数种子 。
2 调用rand函数获取一个或一系列随机数 。
需要注意的是,srand只需要在所有rand调用前,被调用一次即可 , 没必要调用多次 。
七、以下是随机获取10个整型值并输出的例子,辅助理解 。
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
int i;
srand(time(NULL));//设置随机数种子 。
for(i = 0; i10; i ++)//运行10次 。
printf("%d\n", rand());//每次获取一个随机数并输出 。
return 0;
}
关于C语言随机数字产生的原理1.
c语言提供了一些库函数来实现随机数的产生 。c语言中有三个通用的随机数发生器,分别为
rand函数,
random函数,
randomize
函数
2.
但是rand函数产生的并不是真意正义上的随机数,是一个伪随机数,是根据一个数 , 称之为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数 , 但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非破坏了系统,为了改变这个种子的值,c提供了srand()函数,它的原形是void
srand(
int
a) 。
3.
在调用rand函数产生随机数前,必须先利用srand()设好随机数种子 , 如果未设随机数种子,rand()在调用时会自动设随机数种子为1 。一般用for语句来设置种子的个数 。

推荐阅读