📜  如何在C ++中生成具有随机值的向量?(1)

📅  最后修改于: 2023-12-03 15:08:51.907000             🧑  作者: Mango

如何在C++中生成具有随机值的向量?

在C++中,可以使用伪随机数生成器来创建具有随机值的向量。下面是一些常用的方法:

方法1:使用rand函数
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>

int main() {
    std::vector<int> vec(10); // 创建容量为10的向量
    
    std::srand(std::time(0)); // 设置随机数生成器的种子为当前时间
    
    for (int i = 0; i < vec.size(); i++) {
        vec[i] = std::rand() % 100; // 生成0到99之间的随机数
    }
    
    for (int i = 0; i < vec.size(); i++) {
        std::cout << vec[i] << " ";
    }
    
    return 0;
}

说明:

  • rand()函数用于生成一个伪随机数,其返回值是一个介于0和RAND_MAX之间的整数。可以通过对其进行取模运算来产生需要的随机数范围。
  • srand(seed)函数用于初始化随机数生成器的种子,使其生成的随机数序列具有不同的随机性。可以使用time(0)函数来获取当前时间作为种子值,使得每次程序运行都会生成不同的随机数序列。
  • 本例中使用向量来保存生成的随机数,向量的大小为10,可以根据需要进行调整。
方法2:使用随机数分布
#include <iostream>
#include <vector>
#include <random>

int main() {
    std::vector<int> vec(10); // 创建容量为10的向量
    
    std::random_device rd; // 获取一个真实的随机数生成器的种子
    std::mt19937 gen(rd()); // 使用Mersenne Twister生成器
    
    std::uniform_int_distribution<> dis(0, 99); // 生成0到99之间的均匀分布的整数
    
    for (int i = 0; i < vec.size(); i++) {
        vec[i] = dis(gen); // 生成随机数
    }
    
    for (int i = 0; i < vec.size(); i++) {
        std::cout << vec[i] << " ";
    }
    
    return 0;
}

说明:

  • random_device类用于获取真实的随机数生成器的种子,其源自于物理环境,因此更加随机。
  • mt19937类是一种高质量的伪随机数生成器,通常用于需要高度随机性的应用中。
  • uniform_int_distribution类用于生成均匀分布的整数。
  • 可以根据需要调整向量的大小和随机数的范围。
方法3:使用boost库
#include <iostream>
#include <vector>
#include <boost/random.hpp>

int main() {
    std::vector<int> vec(10); // 创建容量为10的向量
    
    boost::random::mt19937 gen; // 使用Mersenne Twister生成器
    
    boost::random::uniform_int_distribution<> dis(0, 99); // 生成0到99之间的均匀分布的整数
    
    for (int i = 0; i < vec.size(); i++) {
        vec[i] = dis(gen); // 生成随机数
    }
    
    for (int i = 0; i < vec.size(); i++) {
        std::cout << vec[i] << " ";
    }
    
    return 0;
}

说明:

  • boost库是一个流行的C++库,其中提供了各种随机数生成器和分布函数。
  • 本例中使用mt19937生成器和uniform_int_distribution整数分布来产生随机数。
  • boost库的安装可以参考官方文档