c语言随机数的生成

在正文开始之前,我们需要说明一件事情,在我们使用函数生成的随机数都不是真正的随机数,准确的叫法应该是伪随机数。

在 C 语言当中使用随机数要用到 rand 函数和 srand 函数。

int rand():返回值为随机值,参数为空,通过 rand 函数就会产生一个随机数。

void srand(unsigned int seed):返回值为空, 就是设置随机种子的,当我们不设置随机种子的时候,默认设置的种子为 1,也就是srand(1)。

举个例子:

#include<stdlib.h>//得引入 stdlib.h 这个头文件
int main()
{
 srand(3);
 int rand_num = rand();
 printf("rand_num = %d\n", rand_num);
 srand(5);
 rand_num = rand();
 printf("rand_num = %d\n", rand_num);
 return 0;
}

在这里,我们通过设置不同的种子达成产生随机数的效果。但是,通过固定的设置种子,显然不是个好方法,因此我们在实际的使用过程中通常都会利用当前的时间作为种子,它的使用是这样的:

#include<time.h> //使用 time 函数必须引入 time.h 头文件
#include<stdlib.h>
int main()
{
 srand((int)time(0));
 int rand_num = rand();
 printf("rand_num = %d\n", rand_num);
 return 0;
}

通过上面的方法我们已经可以容易地获得随机数了,但是在有些时候,我们会使用到某个范围内的数,比如想要生成1-10的随机数,这时候我们又该怎么做呢?我们看下面的例子:

#include<time.h> 
#include<stdlib.h>
int main()
{
	srand((int)time(0));
	while (1)
	{
		printf("rand_num = %d\n", rand() % 10 + 1);
		getchar();
	}
	
	system("pause");
	return 0;
}

我们使用上面的例子可以生成1-10的例子,总结下就是当我们需要生成a-b的随机数的时候,我们可以使用rand()%(b-a+1)+a即可。

猜你喜欢

转载自blog.csdn.net/lws123253/article/details/80039985