生成随机数代码(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;
}