Skip to content

JavaScript Tasodifiy Sonlar (Random)

Math.random() metodi 0 (shu jumladan) va 1 (jumladan emas) orasidagi tasodifiy son qaytaradi.

Misol

js
// Tasodifiy son qaytaradi:
Math.random();

1. Math.random() qanday ishlaydi?

Math.random() 0.0 dan 0.9999... gacha bo'lgan suzuvchi nuqtali (floating-point) son qaytaradi. U hech qachon 1 ga teng bo'lmaydi.


2. Tasodifiy butun sonlar

Math.random() ni Math.floor() bilan birgalikda ishlatib, tasodifiy butun sonlar olish mumkin.

Eslatma

JavaScript-da alohida "integer" (butun son) turi yo'q. Bu yerda kasr qismisiz sonlar haqida gapyapmiz.

0 dan 9 gacha (ikkalasi ham kiritilgan)

js
Math.floor(Math.random() * 10);

Tushuntirish:

  • Math.random() — 0 dan 1 gacha (1 kiritilmagan) suzuvchi nuqtali son qaytaradi. Masalan: 0.0, 0.237, 0.9999 — lekin hech qachon 1 emas.
  • Math.random() * 10 — 0 dan 10 gacha (10 kiritilmagan) oraliqda son beradi. Masalan: 0.0, 3.5, 9.99 va h.k.
  • Math.floor() — sonni pastga (kichik butun songa) yaxlitlaydi:
    • 3.5 → 3
    • 9.99 → 9
    • 0.1 → 0
  • Natijada mumkin bo'lgan butun sonlar: 0 dan 9 gacha (ikkalasi ham kiritilgan), ya'ni [0, 9].

0 dan 10 gacha (ikkalasi ham kiritilgan)

js
Math.floor(Math.random() * 11);

0 dan 99 gacha (ikkalasi ham kiritilgan)

js
Math.floor(Math.random() * 100);

0 dan 100 gacha (ikkalasi ham kiritilgan)

js
Math.floor(Math.random() * 101);

1 dan 10 gacha (ikkalasi ham kiritilgan)

js
Math.floor(Math.random() * 10) + 1;

Tushuntirish:

  • Math.random() — 0 dan 1 gacha (1 kiritilmagan) son qaytaradi.
  • 10 ga ko'paytirish — 0 dan 10 gacha (10 kiritilmagan) oraliq beradi.
  • 1 qo'shish — oraliqni 1 dan 11 gacha (11 kiritilmagan) ko'chiradi.
  • Math.floor() pastga yaxlitlaydi, natijada 1 dan 10 gacha butun son olinadi.

1 dan 100 gacha (ikkalasi ham kiritilgan)

js
Math.floor(Math.random() * 100) + 1;

3. Xulosa jadvali

IfodaBoshlang'ichOxirgi
Math.random()0<1
Math.random() * 100<10
Math.random() * 1000<100
Math.floor(Math.random() * 10)09

4. To'g'ri tasodifiy funksiya

Har safar yangi formula yozmaslik uchun, universal funksiya yaratish foydali:

min (kiritilgan) — max (kiritilmagan) orasida

js
function tasodifiy(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}

min va max (ikkalasi ham kiritilgan) orasida

js
function tasodifiy(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}