Dasturlash - tasodifiy raqamlar

Tasodifiy raqamlar

Tasodifiy raqamlar Kompyuterda tasodifiy raqamlar tasodifiy emas. Bu soxta tasodifiy sonlar ketma -ketligi. Kompyuterda tasodifiy raqamlar, birinchi navbatda, bu mumkin emas (na
08.09.2021

Kompyuterda tasodifiy sonlar tasodifiy emas. Bu "soxta" tasodifiy sonlar ketma -ketligi.

Kompyuterda tasodifiy raqamlar

Birinchidan, haqiqiy tasodifiy sonlarga ega bo'lish haqiqatan ham mumkin emas (yoki istalmagan ham). Biz xohlagan narsa - bu tasodifiy sonlarning takrorlanadigan ketma -ketligi, ba'zi xususiyatlarga mos keladigan, masalan, 0 dan 1000 gacha bo'lgan tasodifiy sonlar ro'yxatining o'rtacha qiymati 500 bo'lishi kerak. Boshqa xususiyatlar, masalan, joriy tasodifiy son va keyingi tasodifiy son istalgan.

Tasodifiy qiymatlar kerak bo'lgan har qanday dasturda (masalan, ko'p simulyatsiyalarda) dasturlash tili bizga tasodifiy sonlar generatorini taqdim etishi kerak. Bu chaqirilganda bizga bitta tasodifiy sonni beradigan funksiya bo'ladi. yana chaqirilganda, bizga boshqa tasodifiy raqamni bering.

"Soxta" tasodifiy sonlar ketma -ketligi

A yaratish yagonatasodifiy raqamni oson. 27. U erda!

A yaratish tasodifiy sonlar ketma-ketliknibiz haqiqiy bo'lishi uchun, bu ketma-ketlik haqida ma'lum taxminlarni istayman, chunki juda qiyin!

E'tibor bering, "tasodifiy" raqamlar generatorlari "soxta" tasodifiy sonlarni ishlab chiqaradi, ya'ni raqamlar faqat "taxminiy" haqiqiy tasodifiylikni anglatadi.

  1. Takrorlash mumkin: nima uchun?
  2. Tezlik (tez hisoblash): Nega?
  3. O'rtacha qiymat - diapazonning o'rtacha qiymati.
  4. Odd va undan keyin ehtimollik kabi, keyin ham toq.
  5. 0 dan 1000 gacha 1000 ta raqamni tanlashda biz har bir raqamga tegmaymiz.
  6. 0 dan 1000 gacha bo'lgan raqamlarni tanlashda biz har qanday raqamni olishimiz mumkin.
  7. 0 dan 1000 gacha bo'lgan 10000 raqamni tanlayotganda, biz har bir raqamdan taxminan 10tasini olishimiz mumkin.

Tasodifiy ketma -ketlikni yaratishning ba'zi mumkin bo'lgan usullari:

  1. Vaqt - Kompyuter soatlaridan foydalaning
  2. Radiatsiya - kompyuterga bir nechta nurlanishni o'rnating va atomlarning qanchalik tez parchalanishini hisoblang. (uggh)
  3. Matematika - formuladan foydalaning (pastga qarang)

Tasodifiy sonni (ketma -ketlikni) yaratish uchun matematikadan foydalanishning afzalligi shundaki, u TEKRARLANADI. Bu quyidagi sabablarga ko'ra muhim: dasturni tuzatish. Sizning kodingizda xatolarni topayotgan muammolarni tasavvur qiling. Agar har safar "yo'l" (yoki dastur oqimi) boshqacha (tasodifiy) bo'lsa nima bo'lar edi? Nosozliklarni tuzatish dahshat bo'lardi! Kun oxirida dasturchi har safar tasodifiy sonlar ketma -ketligini xohlaydi, lekin foydalanuvchi boshqa ketma -ketlikni talab qilishi mumkin. Tasodifiy sonlarning boshqa ketma -ketligini yaratish uchun biz "ekish" funktsiyasidan foydalanamiz. Ushbu kurs maqsadlari uchun sizga tasodifiy sonlar generatorini "ekish" shart emas.

Tilga xos funktsiyalar.

Matlab va C holatida bu generator "rand ()" funksiyasi hisoblanadi. Java yoki Actionscript -da Matematika kutubxonasi bilan bog'liq tasodifiy funktsiya mavjud.

Matlab: rand

Matlab -da rand funktsiyasi

Matlablarning tasodifiy sonlarni yaratish funktsiyasi rand deb ataladi. Matlabda rand funktsiyasi 0 dan 1 gacha suzuvchi nuqta raqamini qaytaradi (masalan .01, .884, .123 va boshqalar).

Tangani aylantirish uchun mantiqiy qiymat (haqiqiy/noto'g'ri) yaratish uchun! p

C: rand

C da rand funktsiyasi

C rand () 0 va katta tamsayı orasidagi qiymatni qaytaradi ("RAND_MAX" nomi bilan chaqiriladi, stdlib.h da topilgan).

C formatidan Matlab formatiga o'tkazish uchun C tilida aytamiz: "rand () / (float) RAND_MAX".

Tangani aylantirish uchun mantiqiy qiymat (haqiqiy/noto'g'ri) yaratish uchun!

Amallar yozuvi: Math.random.

Actionscript -da tasodifiy funktsiya

Math.random () funktsiyasi 0 dan katta yoki unga teng va 1,0 dan kichik qiymat hosil qiladi.

Tangani aylantirish uchun mantiqiy qiymat (haqiqiy/noto'g'ri) yaratish uchun!

1 dan 10 gacha raqam yaratish uchun biz quyidagilarni bajaramiz:

Misollar

Quyida tasodifiy sonlar generatori yordamida qiymatlarni yaratish misollari keltirilgan.

Qisqacha qilib aytganda, bu eslatmalar rand funktsiyasidan foydalanadi, u tasodifiy sonni 0 va 1 dan kam hisoblaydi. Agar siz foydalanayotgan funksiya 0 dan 1 gacha raqam chiqarmasa, siz raqamlar generatorini bunga aylantira olasiz. katta butun songa bo'lish yo'li bilan formatlash.

0 dan 1 gacha bo'lgan tasodifiy sonlarni hisobga olgan holda, har qanday turdagi tasodifiy sonlar yoki qiymatlarni yaratish nisbatan oson. Misol uchun:

0 dan 100 gacha tasodifiy raqam

Tasodifiy to'g'ri yoki noto'g'ri

50 dan 100 gacha tasodifiy raqam

1 dan 10 gacha tasodifiy tamsayı

O'zgaruvchan nuqta qiymatidan butun sonni olish uchun biz yumaloq yoki ship yoki pol kabi funktsiyalarni ishlatishimiz mumkin. Dumaloq funksiya eng yaqin tamsayılarni qaytaradi, keyingi yuqori tamsayılarni yopadi va pastki, keyingi pastki tamsayı. Shunday qilib, 1.001 -ning 2 -chi va 1.999 -ning 2 -chi qismi ham 2. 1.001 -ning 1 -davri 1 -chi va 1.999 -ning 2 -turining 2. 1.999 -ning qavatining 1 -gachasi va hokazo. .

Tasodifiy sonlarni yaratish

O'zingizning tasodifiy sonlar generatorini yozishingiz shart emas. Siz foydalanadigan tillarning ko'pchiligida siz uchun yozilgan til bo'ladi. Aytish kerakki, raqamlarni yaratishning mumkin bo'lgan usullarini bilishning qiymati bor. Bu qiymat tasodifiy sonlar ketma -ketligini olganingizda nimani kutish kerakligini bilishdan iborat. Siz Pac-Man arvohlaringiz har doim ekranning yuqori o'ng tomoniga siljishini xohlamaysiz, chunki ular tasodifiy raqamlar tasodifiy emas edi.

Quyidagi fikr oddiy, tez va samarali tasodifiy sonlar generatori, lekin konstantalarni tanlashga juda sezgir:

next_number = (oldingi_number * Constant1) Mod Constant2

Bizga keyingi va oldingi o'zgaruvchilar kerak emas, shuning uchun aytishimiz mumkin:

son = (son * Konstant1) Mod doimiy 2

Constant2 odatda asosiy sifatida tanlanadi. Nima uchun? (next_number = 0 deb o'ylang)

Muammo:to'lib toshgan!

Yechim:Qo'shimcha matematika!

Yuqoridagi kodning g'oyasi, tenglamani hech qanday qismi M dan katta bo'lmasligi uchun qayta tuzish orqali to'lib ketishdan saqlanishdir.

Onlayn kazino
O'yin -kulgi avtomatlari
Onlaynkazino

Bizning yangiliklarimizga obuna bo'lish orqali birinchi eksklyuziv taklifni oling va eng yaxshi onlayn kazinolarda har kungi ajoyib chegirmalarimizdan foydalaning!