求一定范围内的随机数。
如要取[0,10)之间的随机整数,需将rand()的返回值与10求模。
- randnumber = rand() % 10;
复制代码
然后你会发现每次生成的随机数都是一样的,这是因为计算机生成的是伪随机数。关于伪随机数
rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数。是根据一个数(可以称之为种子)为基准以某个递推公式推算出来的一系列数,当这一系列数很多的时候,就符合正态分布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是确定的,除非你破坏了系统。为了改变这个种子的值,c提供了srand()函数
如需生成每次不一样的随机数可以这样做:
事例:生成1到100的随机数每次都不一样
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h> //引入时间函数库
- int main()
- {
- int x,num;//初始化x,num变量
- srand(time( NULL )); //使用当前时间作为随机数种子
- x =1 + (rand()%100);//生成随机数
- printf("%d",x);//打印随机数
- return 0;
- }
复制代码
————————————————————————
如果取的值不是从0开始呢?你只需要记住一个通用的公式。
要取[a,b)之间的随机整数(包括a,但不包括b),使用:
伪随机浮点数。
要取得0~1之间的浮点数,可以用:
- rand() / (double)(RAND_MAX)
复制代码
如果想取更大范围的随机浮点数,比如0~100,可以采用如下方法:
- rand() /((double)(RAND_MAX)/100)
复制代码
其他情况,以此类推,这里不作详细说明。
|