随机函数通常在给定范围内生成随机数。但是可以从预定义的列表中随机选择吗?例如我有[1,4,5,6],我想只从这个列表中随机选择。如果是这样,怎么样? 谢谢 :) P.s :: C ++代码会对我有所帮助^^
答案 0 :(得分:7)
以下代码会有所帮助,而不是选择随机整数,我们可以在集合中选择随机索引;
int numbers[4] = {1,4,5,6};
srand (time(NULL));
int index = rand() % 4;
int number = numbers[index];
以下是使用<random>
的C ++ 11版本:
#include <random>
int numbers[4] = {1,4,5,6};
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(0,3);
int index = distribution(generator); // generates number in the range 0..3
int number = numbers[index];
答案 1 :(得分:1)
这样做的好方法可能是使用shuffle。基本上,你随机播放数组然后开始逐个选择数字
#include <iostream> // std::cout
#include <algorithm> // std::shuffle
#include <array> // std::array
#include <random> // std::default_random_engine
int main () {
std::array<int, 4> foo {1,4,5,6};
std::shuffle(foo.begin(), foo.end(), std::default_random_engine(12345));
std::cout << "shuffled elements:";
for (int x: foo)
std::cout << ' ' << x;
std::cout << '\n';
return 0;
}