版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40301026/article/details/79947804
1.产生随机数
(1)使用该函数首先应在开头包含
头文件stdlib.h
(2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。
(3)rand()函数没有输入参数,直接通过表达式rand()来引用;
(4)标准C并没有规定int整数的位数,int的位数由编译器定义,例如:
TC编译器中int是16位的,unsigned int 也是16位的,既可以表示0——65535范围内的数;
VC中int的是32位的,unsigned int 也是32位,0——2^32 -1
所以 unsigned int rand()产生的随机数范围还是看编译器的环境而定。
TC编译器中int是16位的,unsigned int 也是16位的,既可以表示0——65535范围内的数;
VC中int的是32位的,unsigned int 也是32位,0——2^32 -1
所以 unsigned int rand()产生的随机数范围还是看编译器的环境而定。
一个小例子:
#include<stdio.h>
#include<stdlib.h>
int main()
{int n=0;
n=rand();
printf("n=%d\n",n);
system("pause");
return 0;
}
2.产生一定范围的随机数
要让随机数限定在一个范围,可以采用模除加加法的方式。
要产生随机数r, 其范围为 m<=r<=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理为,对于任意数,
0<=rand()%(n-m+1)<=n-m
于是
0+m<=rand()%(n-m+1)+m<=n-m+m
即
m<=rand()%(n-m+1)+m<=n
3.产生可变化的随机数
srand()来设置种子
rand()来产生随机数
两个区别看我的博客
来个例子:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//初始化二维数组
void init_pane()
{
int i = 0, j = 0;
for (i = 0; i<4; i++)
{
for (j = 0; j<4; j++)
{
pane[i][j] = 0;
}
}
srand(time(NULL));
i = rand() % 4;
j = rand() % 4;
if (i == 0 || i == 2)
{
pane[i][j] = 2;
}
else
{
pane[i][j] = 4;
}
}