生成一个没有重复数字的随机数?

Jam*_*ard 2 c++ random

我想生成一个随机数,每个数字在0-9范围内,不重复.假设有限长度为4.

  • 1234符合条件,每个复合数字都是唯一的.
  • 1123没有,1重复

怎么可以这样做呢?

Kos*_*Kos 6

要生成数字:

std::vector<int> vec = {0,1,2,3,4,5,6,7,8,9}; // or initialize from array if not c++11
std::random_shuffle(vec.begin(), vec.end());
vec.resize(4);
Run Code Online (Sandbox Code Playgroud)

并将数字加入一个数字:

int number = 0;
for (auto i = vec.begin(); i != vec.end(); ++i) {
    number = 10 * number + (*i);
}
Run Code Online (Sandbox Code Playgroud)

  • 我只是从一开始就使用一个数组,`std :: vector <int>`这里没有任何东西.但是很好的答案!还要注意,这可能会给出一个前导零,它会减少到三位数. (4认同)
  • @JamesLeonard:嗯,你为随机数生成器播种了吗? (2认同)