我不是一個真正的程序員。我正在學習,我走了。 我不熟悉C++知道如何做到這一點,所以我問這裏:隨機選取一個0到8之間的數字,直到沒有剩下數字選擇,然後重新開始
我想要一個邏輯,將從0到8隨機選擇一個數字。 一旦選取了一個數字,它就不應該再次被選取,直到程序經歷從0到8的所有數字。 然後,一旦所有數字都被消除,程序就「重置」數字列表並重新開始同樣的過程無休無止。
我知道我可能不得不做一個枚舉(因爲我會匹配其他變量的數字),但我不知道我將如何設置這個程序。
我不是一個真正的程序員。我正在學習,我走了。 我不熟悉C++知道如何做到這一點,所以我問這裏:隨機選取一個0到8之間的數字,直到沒有剩下數字選擇,然後重新開始
我想要一個邏輯,將從0到8隨機選擇一個數字。 一旦選取了一個數字,它就不應該再次被選取,直到程序經歷從0到8的所有數字。 然後,一旦所有數字都被消除,程序就「重置」數字列表並重新開始同樣的過程無休無止。
我知道我可能不得不做一個枚舉(因爲我會匹配其他變量的數字),但我不知道我將如何設置這個程序。
你在找什麼是隨機洗牌數字從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;
}
......然後當你把它們全部打印出來時,再次洗牌。 –
@JerryCoffin這就是while循環的用途 – Xenopathic
正確的 - 我只是評論你的描述的第一句話。 –
可以創建與該值的向量:{0,1,2,3,4,5,6,7,8}
然後,如果一個for循環{
選擇1和vector.length()之間的一個隨機數N(或者大小,我不記得名字)
選擇矢量[N-1]並從矢量中移除第N-1個元素。
}
你在找什麼是「隨機洗牌」。 –
創建一個從0到8的數字數組,隨機隨機洗動數組,然後按順序穿過它們。 – Barmar