我需要一些建議。我想創建一個邏輯從52張牌組中一次隨機選擇一張牌,直到所有牌都被選中,如果使用了所有52張牌,我需要重新洗牌並重新開始。正確的邏輯從卡組中隨機選擇一張卡片,直到選中所有卡片
我已經創建了這個工作正常的邏輯,但我認爲應該有一些更好的方法來做到這一點。一些MMM - 數學大師頭腦可以結束我的痛苦。
這裏的邏輯:
- 創建一個空的ArrayList來存儲所有52張檢查
- 隨機選擇一個卡,並檢查是否在ArrayList中
- 如果是,重複步驟存在2
- 如果沒有,添加卡的ArrayList
如果數組列表大小是52,空該ArrayList
ArrayList<Integer> list = new ArrayList<Integer>(); int card = -1; do { Random random = new Random(); card = random.nextInt(52); } while (list.contains(card) == true); // code for drawing the card by the number list.add(card);
這個邏輯唯一的問題是當有隻留下了一張卡,還有通過隨機獲得該卡的不到2分%的機會。系統花費大量時間來查找該卡。它會繼續檢查while循環。
請提出改進建議並感謝您的時間。
我看不到你的循環如何結束。 – Maroun
這不是一個非常有效的解決方案,但我真的懷疑係統會花費很多時間來做這件事。電腦速度非常快。 – Keppil
電腦幾乎像Usain Bolt一樣快。 – Maroun