gpt4 book ai didi

c++ - 没有重复的随机数组生成

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:13 24 4
gpt4 key购买 nike

我正在尝试创建一些东西来生成一个没有重复值的随机数组。我已经看过其他答案,但似乎没有一个能帮助我理解。我想不出一种方法来实际生成不包含重复项的随机数。到目前为止,这是我尝试过的:

srand(time(NULL));
int numbers [4];

for (int x=0; x!=4;x++)
{
numbers[x] = 1 + (rand() % 4) ;
printf("%d ", numbers[x]);
}

最佳答案

您开始使用从 0 开始的连续元素填充容器

std::iota(开始(vec), end(vec), 0);

然后你给自己一个像样的随机数生成器并正确地播种

std::mt19937 rng(std::random_device{}());

最后你使用 rng 打乱元素

std::shuffle(begin(vec), end(vec), rng);

live on coliru


在某些实现中 random_device 无法正常工作(最明显的是 Windows 上的 gcc),您必须使用替代种子,即当前时间 → chrono

关于c++ - 没有重复的随机数组生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20734774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com