Atölye › Klondike Solitaire › 6/40. adım
Yeni deste sıralı: önce bütün maçalar, sonra kupalar... Oynamadan önce karıştırmalıyız.
Adil karıştırmanın bilinen bir yolu var: sondan başa doğru gideriz; her kartı, kendisi ya da kendinden önceki kartlardan rastgele biriyle yer değiştiririz. Elindeki kartlardan rastgele birini çekip destenin altına koymak gibi. Böylece her sıralanışın çıkma şansı eşit olur.
```js
for (let i = deck.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1))
;[deck[i], deck[j]] = [deck[j], deck[i]]
}
```for (let i = deck.length - 1; i > 0; i--) → i 51'den başlar, 1'e kadar geriye sayar (i-- bir azaltır).Math.random() → 0 ile 1 arasında rastgele bir sayı (1'in kendisi hiç gelmez).Math.random() * (i + 1) → 0 ile i + 1'in hemen altı arası, ör. 37.62.Math.floor(...) → küsuratı atar: 37.62 → 37. Sonuç 0 ile i arasında rastgele bir sıra numarası: j.[deck[i], deck[j]] = [deck[j], deck[i]] → iki kartın yerini değiştirir. Sağda iki kartlık yeni bir dizi
kurulur, solda o dizi tekrar iki yere dağıtılır.; → satır [ ile başladığı için JavaScript onu bir üstteki satırla birleştirmeye kalkabilir.
Noktalı virgül "önceki satır burada bitti" der. Unutulursa garip hatalar çıkar.newDeck içinde desteyi kuran uzun for satırı ile return deck satırının arasına karıştırma döngüsünü yaz.
Çalıştır.
Beceriler: Diziler ve nesneler, Döngüler
← 52 kartlık deste Yığınlar tek nesnede →