2014-01-11 26 views
1

我不是一個真正的程序員。我正在學習,我走了。 我不熟悉C++知道如何做到這一點,所以我問這裏:隨機選取一個0到8之間的數字,直到沒有剩下數字選擇,然後重新開始

我想要一個邏輯,將從0到8隨機選擇一個數字。 一旦選取了一個數字,它就不應該再次被選取,直到程序經歷從0到8的所有數字。 然後,一旦所有數字都被消除,程序就「重置」數字列表並重新開始同樣的過程無休無止。

我知道我可能不得不做一個枚舉(因爲我會匹配其他變量的數字),但我不知道我將如何設置這個程序。

+1

你在找什麼是「隨機洗牌」。 –

+0

創建一個從0到8的數字數組,隨機隨機洗動數組,然後按順序穿過它們。 – Barmar

回答

3

你在找什麼是隨機洗牌數字從0到8的列表,按順序打印出來,然後再做一遍。例如:

#include <algorithm> 
#include <iostream> 
#include <vector> 

int main() { 
    while (true) { 
     std::vector<int> nums {0, 1, 2, 3, 4, 5, 6, 7, 8}; 
     std::random_shuffle(nums.begin(), nums.end()); 
     for (auto num : nums) { 
      std::cout << num << " "; 
     } 
     std::cout << "\n"; 
     // some kind of continuation detection 
    } 
    return 0; 
} 
+0

......然後當你把它們全部打印出來時,再次洗牌。 –

+0

@JerryCoffin這就是while循環的用途 – Xenopathic

+0

正確的 - 我只是評論你的描述的第一句話。 –

0

可以創建與該值的向量:{0,1,2,3,4,5,6,7,8}

然後,如果一個for循環{

選擇1和vector.length()之間的一個隨機數N(或者大小,我不記得名字)

選擇矢量[N-1]並從矢量中移除第N-1個元素。

}

相關問題