C tasodifiy sonlar


ULASHISH

Tasodifiy sonlar

C tilida tasodifiy sonlarni <stdlib.h> kutubxonasidagi rand() funksiyasi yordamida hosil qilishingiz mumkin.

Standart holatda rand() dasturni har safar ishga tushirganingizda bir xil sonlar ketma-ketligini beradi. Har bir ishga tushirishda turli natijalar olish uchun srand() yordamida "boshlang‘ich nuqta"ni (u seed deb ataladi) ham belgilashingiz mumkin. Siz hozirgina sana va vaqt haqida o‘rgandingiz, endi seed sifatida joriy vaqtdan foydalanishingiz mumkin (chunki u doimo o‘zgarib turadi). Buning uchun dasturingizga <time.h> sarlavha faylini ulaysiz.


Oddiy tasodifiy son

rand() funksiyasi tasodifiy butun son qaytaradi.

Misol

#include <stdio.h>
#include <stdlib.h>

int main() {
  int r = rand();
  printf("%d\n", r);
  return 0;
}

O‘zingiz sinab ko‘ring »

Eslatma: Agar bu dasturni bir necha marta ishga tushirsangiz, har safar bir xil sonlarni ko‘rasiz. Buning sababi — biz hali seed belgilamaganmiz.


Tasodifiy sonlar generatoriga seed berish

Dasturni har safar ishga tushirganingizda turli sonlar olish uchun rand()ga boshlang‘ich nuqta (seed) berishingiz kerak.

Buni srand() yordamida bajarasiz. Keng tarqalgan usul — seed sifatida joriy vaqtdan foydalanish, chunki vaqt doimo o‘zgarib turadi:

Misol

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
  srand(time(NULL));  // seed with current time

  printf("%d\n", rand());
  printf("%d\n", rand());
  printf("%d\n", rand());
  return 0;
}

O‘zingiz sinab ko‘ring »

Maslahat: srand()ni faqat bir marta, main boshida chaqiring. Uni sikl ichida qayta chaqirmang.



Muayyan oraliqdagi tasodifiy son

Ko‘pincha sizga kichikroq oraliqdagi, masalan, 0 dan 9 gacha bo‘lgan sonlar kerak bo‘ladi. Buni qoldiqli bo‘lish (modulo) operatori % yordamida bajarishingiz mumkin:

Misol

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
  srand(time(NULL));

  int x = rand() % 10;  // 0..9
  printf("%d\n", x);
  return 0;
}

O‘zingiz sinab ko‘ring »


Hayotiy misol: zar tashlash

Tasodifiy sonlarning hayotdagi keng tarqalgan qo‘llanilishlaridan biri — olti yoqli zar tashlash. Buni simulyatsiya qilish uchun rand() % 6 yordamida 0 dan 5 gacha sonlarni olamiz, so‘ng oraliq 1 dan 6 gacha bo‘lishi uchun 1 qo‘shamiz:

Misol

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
  srand(time(NULL));

  int dice1 = (rand() % 6) + 1;
  int dice2 = (rand() % 6) + 1;
  printf("You rolled %d and %d (total = %d)\n", dice1, dice2, dice1 + dice2);

  return 0;
}

O‘zingiz sinab ko‘ring »

Dasturni har safar ishga tushirganingizda, xuddi hayotda ikkita zar tashlagandek, 1 dan 6 gacha bo‘lgan ikkita tasodifiy son olasiz.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!