生成随机数代码(C/C++/Qt)
一、Qt中有两种方式生成随机数:
1、Qt5.10以上版本的QRandomGenerator类
下面是一个生成0到99之间的随机数的示例代码:
#include <QRandomGenerator>
int main()
{
// 生成随机数种子,可以使用当前时间作为种子
QRandomGenerator generator = QRandomGenerator::securelySeeded();
// 生成一个0到99之间的随机数
int randomNumber = generator.bounded(100);
return 0;
}
需要在代码中包含QRandomGenerator头文件。使用securelySeeded()
方法生成随机数种子,使用bounded(100)
方法生成0到99之间的随机数。
2、使用qrand()
#include <QTime>
int main()
{
// 用系统时间作为随机数种子
qsrand(QTime::currentTime().msec());
// 生成一个0到99之间的随机数
int randomNumber = qrand() % 100;
return 0;
}
在使用qrand()
函数生成随机数之前,需要使用qsrand()
函数设置随机数种子。上面的代码中,我们使用系统时间的毫秒数作为随机数种子。使用qrand() % 100
生成0到99之间的随机数。
注意:qsrand用来设置一个种子,该种子为qrand生成随机数的起始值。如果不用qsrand设置种子会导致每次运行程序得到的随机数
一样。
二、C++生成随机数
在C++中生成随机数可以使用标准库中的rand()
函数,下面是一个生成0到99之间的随机数的示例代码:
#include <cstdlib>
#include <ctime>
int main()
{
// 设置随机数种子,可以使用当前时间作为种子
std::srand(std::time(nullptr));
// 生成一个0到99之间的随机数
int randomNumber = std::rand() % 100;
return 0;
}
在使用rand()
函数生成随机数之前,需要使用srand()
函数设置随机数种子。上面的代码中,我们使用当前时间作为随机数种子。使用rand() % 100
生成0到99之间的随机数。
需要注意的是,rand()
函数生成的随机数并不是真正的随机数,而是一个伪随机数,其生成的随机数序列可以被预测和重现。如果需要更高质量的随机数,可以使用C++11标准库中的随机数引擎:
#include <random>
int main()
{
// 生成随机数种子,可以使用当前时间作为种子
std::mt19937 engine{ std::random_device{}() };
// 生成一个0到99之间的随机数
std::uniform_int_distribution<int> dist{0, 99};
int randomNumber = dist(engine);
return 0;
}
使用C++11标准库中的随机数引擎需要包含<random>
头文件。使用std::mt19937
类生成随机数种子,使用std::uniform_int_distribution<int>
类生成0到99之间的随机数分布,最后使用dist(engine)
方法生成随机数。
三、C 生成随机数
在C语言中生成随机数可以使用标准库中的rand()
函数,下面是一个生成0到99之间的随机数的示例代码:
#include <stdlib.h>
#include <time.h>
int main()
{
// 设置随机数种子,可以使用当前时间作为种子
srand((unsigned)time(NULL));
// 生成一个0到99之间的随机数
int randomNumber = rand() % 100;
return 0;
}