Tasodifiy sonlar generatori: kompyuterlar tasodifiy sonlarni qanday yaratadi?

Odamlar ming yillar davomida tasodifiysonlardanfoydalanganlar , shuning uchun bu tushuncha yangi emas. Qadimgi Bobil lotereyasidan tortib, Monte -Karlodagi ruletka stollariga, Vegasdagi zar o'yinlariga qadar, yakuniy natijani tasodifiy tasodifga qoldirish.

Ammo qimorni chetga surib, tasodifiylikilm -fan, statistika, kriptografiya va boshqalarda ko'p maqsadlarga ega. Zarlar, tangalar yoki shunga o'xshash vositalarni tasodifiy qurilma sifatida ishlatishning cheklovlari bor.

Ushbu texnikaning mexanik tabiati tufayli, katta miqdordagi tasodifiy sonlarni yaratish ko'p vaqt va mehnat talab qiladi. Insonning zukkoligi tufayli bizda kuchliroq vositalar va usullar bor.

Tasodifiy sonlarni yaratish usullari

Haqiqiy tasodifiy raqamlar

Keling, tasodifiy sonlarni hosil qilish uchun ishlatiladigan ikkita asosiy usulni ko'rib chiqaylik. Birinchi usulbir jismoniy jarayoni asoslangan va ayrim jismoniy hodisadan rasgelelik manbasini hosil bo'ladi kutilmoqdatasodifiy bo'lishi.

Bunday hodisa kompyuterdan tashqarida sodir bo'ladi. O'lchash jarayoni tufayli mumkin bo'lgan noaniqliklar uchun o'lchanadi va o'rnatiladi. Bunga radioaktiv parchalanish, fotoelektr effekti, kosmik fon nurlanishi, atmosfera shovqini (biz ushbu maqolada foydalanamiz) va boshqalarni misol qilib keltirish mumkin.

Shunday qilib, bunday tasodifiylik asosida hosil bo'lgan tasodifiy sonlar " haqiqiy" tasodifiy sonlar deyiladi.

Texnik jihatdan apparat qismi energiyani bir shakldan ikkinchisiga o'zgartiradigan qurilmadan (masalan, nurlanishni elektr signaliga), kuchaytirgichdan va chiqishni raqamli raqamga aylantirish uchun analog-raqamli konvertordan iborat.

Soxta tasodifiy raqamlar nima?

"Haqiqiy" tasodifiy sonlarga alternativa sifatida tasodifiy sonlarni hosil qilishning ikkinchi usulitasodifiy natijalarga olib keladigan hisoblash algoritmlarini o'z ichiga oladi.

Nima uchun tasodif ko'rinadi? Chunki olingan yakuniy natijalar, aslida, urug 'qiymati yoki kalitsifatida ham tanilgan boshlang'ich qiymat bilan to'liq aniqlanadi . Shuning uchun, agar siz asosiy qiymatni va algoritm qanday ishlashini bilsangiz, tasodifiy ko'rinadigan natijalarni takrorlashingiz mumkin.

Bu turdagi tasodifiy sonlar generatorlari tez -tez psevdo -tasodifiy sonlargeneratorlari deb ataladi va natijada psevdo -tasodifiy sonlarni chiqaradi.

Garchi bunday turdagi generatorlar odatda tasodifiy manbalardan hech qanday ma'lumot to'plamasa ham, bunday kalitlarni yig'ish kerak bo'lganda mumkin bo'ladi.

Keling haqiqiy tasodifiy soni generatorlari yoki ba'zi jihatlarini solishtirish TRNGva pseudorandom soni generatorlari yoki PRNGs.

PRNGlar TRNGlarga qaraganda tezroq. Deterministik xarakterga ega bo'lganligi sababli, ular tasodifiy hodisalar ketma-ketligini takrorlash kerak bo'lganda foydalidir. Bu, masalan, kodni tekshirishda katta yordam beradi.

Boshqa tomondan, TRNGlar davriy emas va shifrlash kabi xavfsizlikka sezgir rollarda yaxshi ishlaydi.

A davribir PRNG u o'zini takrorlab boshlanadi oldin o'tadi tekrarlamadan soni. Shunday qilib, boshqa hamma narsalar teng bo'lib, uzoqroq muddatga ega bo'lgan PRNG taxmin qilish va yorilish uchun ko'proq kompyuter resurslarini talab qiladi.

Psevdo-tasodifiy raqamlar generatori uchun misol algoritmi

Kompyuter bajarilishi kerak bo'lgan qoidalarga asoslangan kodni bajaradi. Umuman PRNG uchun, bu qoidalar quyidagilarga bog'liq:

  1. Ba'zi bir boshlang'ich raqamni qabul qiling, bu urug 'yoki kalit.
  2. Natija yaratish uchun ushbu urug'ni matematik operatsiyalar ketma-ketligida qo'llang. Natijada tasodifiy son hosil bo'ladi.
  3. Olingan tasodifiy sonni keyingi takrorlash uchun urug 'sifatida ishlating.
  4. Tasodifiylikni taqlid qilish uchun jarayonni takrorlang.

Endi bir misolni ko'rib chiqaylik.

To'g'ri chiziqli generator

Bu generator bir qator soxta tasodifiy sonlarni ishlab chiqaradi. Boshlang'ich X 0urug ' va butun sonli parametrlar a, ko'payish sifatida bva modul sifatida mberilgan bo'lsa, generator chiziqli munosabatlar bilan belgilanadi: X n ≡ (aX n-1 + b) mod m. Yoki dasturlash uchun qulayroq sintaksisdan foydalanish: X n = (a * X n-1 + b) % m.

Ushbu a'zolarning har biri quyidagi shartlarni bajarishi kerak:

Keling, boshlang'ich qiymatlarni argument sifatida qabul qiladigan va berilgan uzunlikdagi tasodifiy sonlar qatorini qaytaradigan JavaScript funktsiyasini yarataylik:

To'g'ridan-to'g'ri chiziqli generator-eng qadimgi va eng mashhur PRNG algoritmlaridan biri.

Kompyuterlar tomonidan bajariladigan tasodifiy sonlar algoritmlariga kelsak, ular 1940 va 50-yillarning boshlariga to'g'ri keladi (masalan, O'rta kvadrat usuli va Lehmer generatori) va yozishni davom ettiradi (Xoroshiro128+, Squares RNG va boshqalar). .

Tasodifiy raqamlar namunasi

Men tasodifiy sonlar generatorini veb -sahifaga joylashtirish haqida ushbu maqolani yozishga qaror qilganimda, men o'z tanlovimni qildim.

Men JavaScript -ning Math.random ()funktsiyasini asos sifatida ishlatgan bo'lardim va oldingi maqolalarda bo'lgani kabi soxta tasodifiy sonlarda chiqish hosil qilardim (ko'paytirish jadvaliga qarang - o'z vaqt jadvalini kodlash).

Ammo ushbu maqolaning o'zi tasodifiy sonlarni yaratish haqida. Shunday qilib, men "haqiqiy" tasodifiy ma'lumotlarni to'plashni o'rganishga qaror qildim va o'z kashfiyotimni siz bilan baham ko'rishga qaror qildim.

Shunday qilib, quyida "haqiqiy" tasodifiy raqamlar ishlab chiqaruvchisi mavjud. Parametrlarni o'rnating va Generate tugmasini bosing.