当前位置:首页 C++ > 正文

c++生成不重复的随机数

作者:野牛程序员:2023-06-20 13:08:20 C++阅读 2413

要在C++中生成不重复的随机数,你可以使用以下方法:

  1. 使用std::random_shuffle函数对随机数序列进行洗牌。首先,你需要将数字放入一个容器(如std::vector),然后使用std::random_shuffle函数对容器中的元素进行洗牌。这样可以确保生成的随机数序列是无序的,且不会有重复的数字。

    下面是一个示例代码:

#include <iostream>
#include <vector>
#include <algorithm>
#include <random>

int main() {
    std::vector<int> numbers; // 存储随机数的容器

    // 添加数字到容器中
    for (int i = 1; i <= 10; ++i) {
        numbers.push_back(i);
    }

    // 使用随机数引擎进行洗牌
    std::random_device rd;
    std::mt19937 rng(rd());
    std::shuffle(numbers.begin(), numbers.end(), rng);

    // 输出洗牌后的结果
    for (const auto& num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

该示例代码生成了一个包含数字1到10的容器,然后使用std::shuffle函数对容器中的数字进行洗牌。最后,打印洗牌后的结果。

  1. 使用std::set容器来存储生成的随机数。std::set是一个有序的容器,它会自动去重,确保没有重复的元素。

    下面是一个示例代码:

#include <iostream>
#include <set>
#include <random>

int main() {
    std::set<int> numbers; // 存储随机数的容器

    // 使用随机数引擎生成随机数,并插入到set容器中
    std::random_device rd;
    std::mt19937 rng(rd());
    std::uniform_int_distribution<int> dist(1, 10); // 生成1到10之间的随机数

    while (numbers.size() < 10) {
        int num = dist(rng);
        numbers.insert(num);
    }

    // 输出结果
    for (const auto& num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

该示例代码使用std::set容器存储随机数,使用std::uniform_int_distribution生成1到10之间的随机数,并使用std::set的特性自动去重。循环生成随机数,直到容器中有10个不重复的数字。最后,打印容器中的结果。

无论你选择哪种方法,都可以生成不重复的随机数序列。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击