Random
Mamataliyev Diyorbek
Tasodifiy sonlar generatori haqida eshitganmisiz? Eshitmagan bo’lsangiz aytaman, tasodifiy sonlar generatori dastur tomonidan biror oraliqdagi tasodifiy tanlangan (oldindan aniq bo’lmagan) sonni olish uchun ishlatiladi. Biz o’rganayotgan C# dasturlash tilida buning uchun Random sinfidan foydalaniladi.
Buning bizga nima keragi bor?
Misol uchun, siz ko’proq sonlar ustida biror amal bajaruvchi dastur yozdingiz. Dasturingiz to’g’ri ishlayotganini tekshirish uchun ishga tushirganingizda, shuncha sonni yozib chiqishingiz shart emas. Shunchaki bitta massiv olib, Random sinfidan foydalanib uni tasodifiy sonlar bilan osongina to’ldirish mumkin. Dastur har safar ishga tushirilganida har xil sonlar tanlab olinadi. Yoki ekranning turli joylarida paydo bo’luvchi shakllar koordinatasini Random orqali olib, takrorlanmas animatsiyalar hosil qilishingiz mumkin va hokazo, boshqa ko’p maqsadlarda ishlatishingiz mumkin.
Endi esa bu sinf metodlaridan qanday foydalanishni ko’rib chiqamiz.
Random sinfi System
standart kutubxonasida joylashgan. Bu sinfdan foydalanish uchun avval undan obyekt olishimiz kerak :
So'ngra quyidagi metodlardan foydalanishimiz mumkin:
• Random.Next() metodi [0; 2 147 483 647) oraliqdan integer tipidagi tasodifiy sonni tanlab beradi.
• Random.Next(int a) – [0; a) oraliqdagi tasodifiy butun sonni olish uchun ishlatiladi.
• Random.Next(int a,int b) – [a;b) oraliqdagi tasodifiy butun sonni olib beradi. Int tipida qiymat qaytaradi.
• Random.NextBytes(byte [] b) – byte tipidagi b massivni tasodifiy sonlar bilan to’ldirib beradi.
• Random.NextDouble() – [0;1) oraliqdagi tasodifiy haqiqiy sonni tanlab olish uchun ishlatiladi.
Metodlarni kodda quyidagicha ishlatish mumkin:
Output:
Dastur kodini ishlatib ko’rganingizda sizdagi natija yuqoridagidan farq qilishi tabiiy, dasturni qayta-qayta ishlatganingizda har safar avvalgisidan farqli natijalar olasiz. Bu konstruktorning o'ziga xos xususiyatlaridan biridir.
Mavzuyimiz hali tugamadi, chunki Random sinfining yana bitta konstruktori bor. Sinfdan quyidagicha obyekt olishimiz ham mumkin:
Xo’sh, bu konstruktorni avvalgisidan qanday farqi bor?
Agar ikkinchi konstruktor orqali obyekt olgan bo’lsangiz, chegaralar va n ning bir xil qiymatlarida olinadigan natijalar ham aynan bir xil bo’ladi. Dasturni har safar qayta ishga tushirilganda bir xil ketma-ketlik hosil bo’ladi. Konstruktordagi n ning qiymati yoki chegaralar o’zgartirilsagina natija o’zgaradi. Masalan, quyidagi kodni o’z kompilyatoringizda ishlatib ko’ring:
Menda natija quyidagicha bo’ldi:
Shubhasiz, sizda ham shunday natija hosil bo’ladi va dasturni qayta-qayta ishlatsangiz ham natija o’zgarmaydi. Bu holat Random sinfining barcha metodlarida kuzatiladi. Konstruktorda kiritilgan n soni ketma-ketlikning boshlang’ich nuqtasi bo’lib, uning turli qiymatlarida ketma-ketlik turlicha bo’ladi. Xulosa qilib aytadigan bo’lsak, ikkinchi konstruktordan foydalanganingizda Tasodiflar tasodifan bo’lmaydi ).
Last updated