C语言生成随机数,只需了解这3个函数

使用C语言实现随机数,需要了解3个函数,分别是:

  1. rand函数。
  2. srand函数。
  3. time函数。

1.rand函数

使用rand函数需要包含stdlib.h头文件。rand函数的声明如下:

int rand(void);

很简单,rand函数会返回一个介于0~RAND_MAX的随机数。RAND_MAX是一个至少是32767的整数。

但是,使用rand函数前,需要先使用srand函数设置随机数种子,这样才能保证rand生成的数是随机的。

2.srand函数

srand函数的声明也在stdlib.h这个头文件中。声明如下:

void srand(unsigned int seed);

只需要传一个整数即可,就能设置随机数的种子了。注意:srand函数在整个程序运行期间只能被调用一次。

那么srand究竟需要传什么数呢?这就需要学习time函数了。

3.time函数

time函数的声明在time.h这个头文件中。声明如下:

time_t time(time_t* timer);

我们并不关心这个参数是什么意思,传一个NULL指针就行了。time函数会返回一个时间戳,这个时间戳是一个time_t类型的整数,这个数刚好可以作为srand函数的参数来设置随机数的种子。由于类型并不匹配,所以需要强制类型转换。

其实说了这么多,都是理论。下面看一个例子就懂了。

#include 
#include 
#include 

int main()
{
	srand((unsigned int)time(NULL));
	// 生成10个随机数
	for (int i = 0; i < 10; ++i)
	{
		int randNum = rand();
		printf("%d ", randNum);
	}

	return 0;
}

srand函数和time函数配合使用,设置随机数的种子。接下来就可以使用rand函数生成随机数了。

输出结果:

第一次运行:
输出结果1
第二次运行:
输出结果2
第三次运行:
输出结果3
注意到,由于我三次运行的时间间隔很短,srand和time函数设置的随机数种子是很接近的,所以运行结果还是有一些规律。如果想生成更加随机的数,需要调用一些第三方库,或者使用一些更高级的随机数算法。不过这篇文章讲解的方法,对于绝大多数初学者遇到的情况都够用了。

总结

生成随机数的步骤:

  1. 先使用srand函数和time函数设置随机数种子,具体的用法是:srand((unsigned int)time(NULL));注意这一行代码在整个程序运行期间只能执行一次。
  2. 接着调用rand函数,rand函数会返回一个介于0~RAND_MAX的随机数。

感谢大家的阅读!

你可能感兴趣的:(C语言,c语言,c++,算法,随机数,函数)