C ++:如何生成非重复随机数列表

时间:2013-10-29 01:37:44

标签: c++

例如,生成一个从0到51的非重复随机数列表。[0,51]

for(int i = 0;i<52;i++)
   {

    //print out 0,1,2,3,4,5,6,7,8,....,51.

   }

2 个答案:

答案 0 :(得分:3)

创建arrayvector并随机随机播放。

vector<int> v;
for(int i = 0; i < 52; ++i)
    v.push_back(i);
std::random_shuffle(v.begin(), v.end()); //need #include <algorithm>

第一个随机数为v[0],您有52个非重复随机数

答案 1 :(得分:1)

看起来你正试图将一副纸牌洗牌作为家庭作业;)

以下是Python中帮助您入门的代码:

def shuffle(deck):
    for i in xrange(len(deck)):
        rand_index = random.randint(i, len(deck) - 1)
        temp = deck[i]
        deck[i] = deck[rand_index]
        deck[rand_index] = temp