Читать книгу Robototexnikadan boshlang’ich bilimlar. O’quv qo’llanma - Boxodir Xoshimovich Karimov - Страница 17

4-bob. DASTURLASHNING TARKIBI
4.7.TASODIFIY KATTALIKLAR GENERATORI

Оглавление

4.7.1.Arduinoda random va random Seed funksiyasi

Arduino rondom funksiyasi psevdo-tasodifiy raqamni qaytaradi, ya`ni tasodifiy sonlarni yaratish ketma-ketligi hali ham oldindan aytib bo`ladi. Random Seed funksiyasi ko`proq tasodifiy qiymatlarni yaratish uchun tasodifiy funksiyaga o`zgaruvchi yoki doimiyni qo`yish imkonini beradi. Arduino IDE dasturlash tilida ma’lum bir diapazondagi tasodifiy sonni qanday qilib to`g`ri belgilashni aniqlaymiz.

random – Arduinoda tasodifiy sonlar yaratish

Random (min, max) funksiyasi min va maksimal qiymatlar bilan belgilangan diapazonda psevdo-tasodifiy raqamni qaytarish imkonini beradi. Keling, turli xil ma`lumotlar turlariga ega misollarni ko`rib chiqaylik.

Taqdim etilgan misolda 0 dan 250 gacha bo`lgan oraliqda butun sonlarni saqlaydigan byte ma`lumotlar turi tanlanadi. Boshqa ma`lumotlar turlaridan foydalanish mumkin: int, long, unsigned long, unsigned int va boshqalar. Shunga ko`ra, kerakli diapazon (min, max) o`rnatiladi.

byte malumotlar;

void setup () {

Serial.begin (9600);

}

void loop () {

malumotlar = random (100, 200); //diapazondagi arduino tasodifiy soni Serial.println (malumotlar);

delay (250);

}

4.7.2.Arduinoda random float

Mikrokontroller faqat butun sonlarni yaratishi mumkin. Shuning uchun, ikkita kasrli float ma`lumotlar turini olish uchun alohida butun son hosil qilishingiz va unga o`nli kasrlar qo`shishingiz kerak. Bunday dasturga misol:

float malumotlar;

float malumotlar1;

float malumotlar2;

void setup () {

Serial.begin (9600);

}

void loop () {

malumotlar1=random (10); //butun sonlarni yarating malumotlar1=random (100); //kasrdan keyin raqamlar hosil qilish

malumotlar=malumotlar1 + malumotlar2/100;// qiymatlarni qo`shing

Serial.println (malumotlar);

delay (250);

}

4.7.3.Arduinoda random bool

Agar sizga tasodifiy boolen o`zgaruvchi kerak bo`lsa, u faqat ikkita rost (true) yoki yolg`on (false) qiymatni qabul qilishi mumkin. Keyin berilgan ehtimollik bilan tasodifiy rost/yolg`on hosil qilishingiz mumkin. Shunchaki tasodifiy funksiya natijasini bool o`zgaruvchisiga belgilaymiz, bunda yolg`on bo`lish ehtimolining o`zaro nisbatini ko`rsatamiz. Misol:

bool malumotlar;

void setup () {

Serial.begin (9600);

}

void loop () {

//o`zgaruvchan ma`lumotlar 1/5 ehtimollik bilan 0 qiymatini oladi

malumotlar = random (5);

Serial.println (malumotlar);

delay (250);

}

4.7.4.Arduinoda random Seed tasodifiy raqamlari

E`tibor bering, yuqoridagi barcha misollarda, dastur har safar qayta ishga tushirilganda, raqamlarning tasodifiy ketma-ketligi takrorlanadi. Buni Arduinoning random Seed funksiyasidan foydalanib oldini olish mumkin. random Seed tasodifiy funksiyaga o`zgaruvchini qo`yish imkonini beradi. Buni amalga oshirish uchun raqamlarni yaratishni tasodifiy qilish uchun millis, analogRead yoki boshqa variantlardan foydalaning.

int malumotlar;

void setup () {

Serial.begin (9600);

randomSeed (analogRead (A1)); //A1 piniga hech narsa ulanmagan

}

void loop () {

malumotlar = random (100, 200); //diapazondagi Arduino tasodifiy soni

Serial.println (malumotlar);

delay (250);

}

Dastur har safar qayta ishga tushirilganda, psevdo-tasodifiy raqamlar generatori random Seed (analogRead (A1)) funksiyasi bilan ishga tushiriladi (portdagi «shovqin» tufayli tasodifiy qiymat bilan). Buning uchun har qanday bo`sh portdan foydalanishingiz mumkin, chunki barcha analog chiqishlar atrof-muhitdan tasodifiy shovqinlar-radio to`lqinlari, kompyuterlar, uyali telefonlar va boshqalarning elektromagnit shovqinlarini oladi.

Robototexnikadan boshlang’ich bilimlar. O’quv qo’llanma

Подняться наверх