c语言产生随机数的函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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()产生的随机数范围还是看编译器的环境而定。
 一个小例子:
#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;
	}
}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页