大家好我有一個問題,選擇隨機數來刷一副撲克牌。隨機隨機洗牌,我們試圖在每個循環中選擇一張隨機卡,但似乎如果我們用完了一種,我們不能隨機選擇一種。它進入無限循環。有什麼建議麼?在c中挑選隨機數字#
(翻譯:瑪卡=鏟,sinek =俱樂部,KUPA =心臟,卡羅=鑽石,淡水河谷=插孔,KIZ =女王,papaz =國王)
public class KartKarma : MonoBehaviour {
public GameObject[] Deste;
public static GameObject KupaAs, Kupa2, Kupa3, Kupa4, Kupa5, Kupa6, Kupa7, Kupa8, Kupa9, Kupa10, KupaVale, KupaKiz, KupaPapaz;
public static GameObject KaroAs, Karo2, Karo3, Karo4, Karo5, Karo6, Karo7, Karo8, Karo9, Karo10, Karo11, Karo12, Karo13;
public static GameObject SinekAs, Sinek2, Sinek3, Sinek4, Sinek5, Sinek6, Sinek7, Sinek8, Sinek9, Sinek10, Sinek11, Sinek12, Sinek13;
public static GameObject MacaAs, Maca2, Maca3, Maca4, Maca5, Maca6, Maca7, Maca8, Maca9, Maca10, Maca11, Maca12, Maca13;
public GameObject[] Kupa = {KupaAs, Kupa2, Kupa3, Kupa4, Kupa5, Kupa6, Kupa7, Kupa8, Kupa9, Kupa10, KupaVale, KupaKiz, KupaPapaz};
public GameObject[] Karo = {KaroAs, Karo2, Karo3, Karo4, Karo5, Karo6, Karo7, Karo8, Karo9, Karo10, Karo11, Karo12, Karo13};
public GameObject[] Sinek = {SinekAs, Sinek2, Sinek3, Sinek4, Sinek5, Sinek6, Sinek7, Sinek8, Sinek9, Sinek10, Sinek11, Sinek12, Sinek13};
public GameObject[] Maca = {MacaAs, Maca2, Maca3, Maca4, Maca5, Maca6, Maca7, Maca8, Maca9, Maca10, Maca11, Maca12, Maca13};
List<GameObject> deste = new List<GameObject>();
// Use this for initialization
void Start() {
int i = 0;
while(i < 26){
int a = Random.Range(1,5);
if (a == 1) {
int b = Random.Range(0,13);
if(Maca != null){
while(Maca[b] == null){
b = Random.Range(0,13);
}
deste.Add(Maca[b]);
Maca[b] = null;
}
else {
while(a == 1)
a = Random.Range(2,5);
}
}
if (a == 2) {
int b = Random.Range(0,13);
if(Sinek != null){
while(Sinek[b] == null)
b = Random.Range(0,13);
deste.Add (Sinek[b]);
Sinek[b] = null;
}
else {
while(a == 2)
a = Random.Range(1,5);
}
}
if (a == 3) {
int b = Random.Range(0,13);
if(Karo != null){
while(Karo[b] == null)
b = Random.Range(0,13);
deste.Add (Karo[b]);
Karo[b] = null;
}
else {
while(a == 3)
a = Random.Range(1,5);
}
}
if (a == 4) {
int b = Random.Range(0,13);
if(Kupa != null){
while(Kupa[b] == null){
b = Random.Range(0,13);
}
deste.Add(Kupa[b]);
Kupa[b] = null;
}
else {
while(a == 4)
a = Random.Range(1,5);
}
}
i++;
}
}
void Update() {
}
}
什麼是Random.Range?通常,不要在方法中創建新的隨機實例,而是重新使用實例變量或將其作爲參數傳遞。否則,你會得到相同的值,因爲隨機會被循環中重複調用的當前時間播種。 –
代表'Random.Range'使用'Random.Next'然後嘗試。 –
此外,您的代碼只處理1到4的'a',而Range方法則發送參數1和5,無論它們是什麼意思。你從哪裏得到那5個? – Tarec