srand是C++标准库中的一个函数,用于设置随机数生成器的种子。它的原型定义在<cstdlib>头文件中,函数签名如下:
void srand(unsigned int seed);
其中,seed是一个无符号整数,作为随机数生成器的种子。
使用srand函数可以通过指定种子来初始化随机数生成器,以生成伪随机数序列。如果不调用srand函数,默认情况下会使用一个默认的种子,通常是当前系统时间。
一般来说,我们在程序中使用srand函数的常见做法是将当前时间作为种子,以确保每次程序运行时都会生成不同的随机数序列。例如,可以使用time函数获取当前时间,并将其作为srand函数的参数传入,示例代码如下:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
// 使用当前时间作为种子
srand(static_cast<unsigned int>(time(nullptr)));
//或者按照课本上的写:
//srand((unsigned)time(NULL));
/*srand((unsigned)time(NULL))
是一个常用的设置随机数生成器种子的方法,它将当前时间转换成一个无符号整数,并将该值作为参数传递给srand()
函数,以初始化随机数生成器。这样做的目的是为了让每次程序运行时都生成不同的随机数序列。
具体来说,time(NULL)
函数返回从1970年1月1日到现在所经过的秒数,即Unix时间戳,它的返回值是一个time_t
类型的整数。我们将此整数强制转换为无符号整数,以避免不同编译器对负整数的处理方式不同。
然后将转换后的无符号整数作为srand()
函数的参数,以设置随机数生成器的种子。由于随机数生成器是基于种子产生随机数的,因此不同的种子会产生不同的随机数序列。因此,使用当前时间作为种子可以确保每次程序运行时都会产生不同的随机数序列。*/
// 生成随机数
int randomNumber = rand();
//int randomNumber=rand()%6;即生成小于6的整数(0,1,2,3,4,5)
// 输出随机数
std::cout << "随机数:" << randomNumber << std::endl; return 0; }
在这个示例程序中,我们首先使用time函数获取当前时间,并将其转换为无符号整数类型,然后将该值作为srand函数的参数传入,以初始化随机数生成器。接着,我们使用rand函数生成一个随机数,并将其输出到标准输出流中。
需要注意的是,由于种子的变化会导致生成的随机数序列发生改变,所以在实际应用中,一般只需要在程序开始时调用srand函数一次即可,不需要在每次生成随机数之前都调用一次srand函数。