gpt4 book ai didi

c++如何排除已经尝试过的随机数

转载 作者:搜寻专家 更新时间:2023-10-31 01:48:36 26 4
gpt4 key购买 nike

我正在编写一个让原子在晶格中移动的程序,它通过选择一个与特定方向(其中有八个)相关联的随机数来测试该方向是否可行,如果不可行则选择一个新的随机数数。

我想知道是否有办法从可以选择的随机数池中排除该随机数,这样程序就不会重复尝试选择相同的随机数

我目前正在使用一个看起来有点像这样的开关(不包括整个功能,因为目前它非常庞大......

int a = rand()%8;
switch (a)
{case 0:
...
case 1:
...
and so forth
}

最佳答案

如何使用包含数字 1 到 8 的 int vector ,然后在每次迭代后随机打乱它?喜欢:

std::vector<int> vOneToEight;
for (int i=1; i<9; ++i) vOneToEight.push_back(i); // {1, 2, 3, 4, 5, 6, 7, 8}.
std::random_shuffle(vOneToEight.begin(), vOneToEight.end()); // 1 to 8 with random order.
for (size_t i=0; i<vOneToEight.size(); ++i)
your_func(vOneToEight[i]); // Use the outcome in whatever way.
std::random_shuffle(vOneToEight.begin(), vOneToEight.end()); // Re-shuffle.
for (size_t i=0; i<vOneToEight.size(); ++i)
your_func(vOneToEight[i]); // Keep going if needed..

关于c++如何排除已经尝试过的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17581721/

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