Atölye › Mayın Tarlası › 7/26. adım
Şu an mayınlar hep ilk satırlara diziliyor; oyun hep aynı. Adayları önce karıştırırsak ilk 10 aday rastgele olur.
Karıştırmanın doğru ve hızlı bir yolu var: Fisher–Yates. Listenin sonundan başa doğru gel; her elemanı, kendisi dahil önündeki rastgele bir elemanla yer değiştir. Bir deste kartı sondan başa doğru tek tek karıştırmak gibi.
```js
for (let i = candidates.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1))
;[candidates[i], candidates[j]] = [candidates[j], candidates[i]]
}
```for (let i = candidates.length - 1; i > 0; i--) → sondan başa sayan döngü: i-- her turda 1 azaltır.Math.random() → 0 ile 1 arasında (1 hariç) rastgele bir ondalık sayı.Math.floor(Math.random() * (i + 1)) → i + 1 ile çarpıp aşağı yuvarla: 0 ile i arasında rastgele tam sayı.[candidates[i], candidates[j]] = [candidates[j], candidates[i]] → iki elemanın yerini değiştirir (sağdaki
iki değer sırayla soldaki iki yere yazılır).; → satır [ ile başladığı için şart: yoksa JavaScript onu bir önceki satıra yapıştırmaya çalışır.slice(0, MINES) artık rastgele 10 hücre seçer.placeMines içinde const candidates = ... satırının altına döngüyü yaz (mayın koyan for satırının üstüne).
Çalıştır.
Beceriler: Döngüler, Diziler ve nesneler
← Mayınlar, ama ilk tıklamanın altına değil Çevredeki mayınları say →