Random na numero online RF. Online na pangalan, password at random na mga generator ng numero
Ano ang randomness sa isang computer? Paano nabuo ang mga random na numero? Sa artikulong ito sinubukan naming magbigay ng mga simpleng sagot sa mga tanong na ito.
SA software, at sa teknolohiya sa pangkalahatan ay may pangangailangan para sa reproducible randomness: ang mga numero at larawan na tila random ay aktwal na nabuo ng isang tiyak na algorithm. Ito ay tinatawag na pseudorandomness at titingnan natin mga simpleng paraan paglikha ng mga pseudorandom na numero. Sa dulo ng artikulo ay bumalangkas tayo simpleng teorama upang lumikha ng mga tila random na numerong ito.
Ang pagtukoy kung ano ang eksaktong bumubuo sa isang aksidente ay maaaring maging mahirap. mahirap na gawain. May mga pagsubok (tulad ng Kolmogorov complexity) na maaaring magbigay sa iyo eksaktong halaga gaano ka random ang isang partikular na sequence. Ngunit hindi kami mag-abala, susubukan lang naming lumikha ng isang pagkakasunud-sunod ng mga numero na tila walang kaugnayan sa isa't isa.
Kadalasan ang kailangan ay hindi lamang isang numero, ngunit ilang mga random na numero na patuloy na nabuo. Samakatuwid, dahil sa halaga ng binhi, kailangan nating lumikha ng iba pang mga random na numero. Ang paunang halaga na ito ay tinatawag buto, at titingnan natin kung paano ito makukuha sa ibang pagkakataon. Sa ngayon, tumuon tayo sa paglikha ng iba pang mga random na halaga.
Pagbuo ng mga Random na Numero mula sa isang Binhi
Ang isang diskarte ay maaaring maglapat ng ilang nakatutuwang formula sa matematika sa binhi, pagkatapos ay i-twist ito nang labis na ang numero ng output ay tila hindi mahuhulaan, at pagkatapos ay kunin iyon bilang binhi para sa susunod na pag-ulit. Ang tanging tanong ay kung ano ang magiging hitsura ng distortion function na ito.
Subukan natin ang ideyang ito at tingnan kung saan tayo dadalhin nito.
Ang distortion function ay kukuha ng isang value at magbabalik ng isa pa. Tawagin natin itong R.
R(Input) -> Output
Kung ang halaga ng ating binhi ay 1, kung gayon ang R ay lilikha ng isang serye ng 1, 2, 3, 4,... Ito ay hindi mukhang random, ngunit makakarating tayo doon. Hayaan ang R ngayon na magdagdag ng isang pare-pareho sa halip na 1.
R(x) = x + c |
Kung c ay katumbas, halimbawa, 7, pagkatapos ay makuha namin ang serye 1, 8, 15, 22, ... Hindi pa rin pareho. Malinaw, kung ano ang nawawala sa atin ay ang mga numero ay hindi lamang dapat tumaas, dapat silang kumalat sa ilang saklaw. Kailangan namin ang aming sequence upang bumalik sa simula - isang bilog ng mga numero!
Bilog ng numero
Tingnan natin ang mukha ng orasan: ang aming row ay nagsisimula sa 1 at umiikot sa isang bilog hanggang 12. Ngunit dahil nagtatrabaho kami sa isang computer, hayaan natin na mayroong 0 sa halip na 12.
Ngayon simula sa 1 ay muli tayong magdadagdag ng 7. Progress! Nakikita namin na pagkatapos ng 12 ang aming serye ay nagsisimulang umulit, kahit na anong numero ang aming sisimulan.
Dito makakakuha tayo ng isang napakahalagang katangian: kung ang ating loop ay binubuo ng n elemento, kung gayon ang maximum na bilang ng mga elemento na makukuha natin bago sila magsimulang umulit ay n.
Ngayon ay muling isulat natin ang R function upang tumugma sa ating lohika. Maaari mong limitahan ang haba ng isang loop gamit ang modulus operator o ang natitirang operator.
R(x) = (x + c) % m
R (x) = (x + c) % m |
Sa puntong ito maaari mong mapansin na ang ilang mga numero ay hindi magkasya sa c. Kung c = 4 at nagsimula kami sa 1, ang aming sequence ay magiging 1, 5, 9, 1, 5, 9, 1, 5, 9, ... na siyempre ay hindi gumagana para sa amin, dahil ang sequence na ito ay ganap na hindi random. Ito ay nagiging malinaw na ang mga numero na pipiliin namin para sa haba ng loop at ang haba ng pagtalon ay dapat na nauugnay sa isang espesyal na paraan.
Kung susubukan mo ang ilang magkakaibang value, makakakita ka ng isang property: dapat na coprime ang m at c.
Sa ngayon kami ay gumagawa ng mga paglukso sa pamamagitan ng pagdaragdag, ngunit paano kung gumamit kami ng multiplikasyon? Paramihin natin X sa isang pare-pareho a.
R(x) = (ax + c) % m
R (x) = (ax + c) % m |
Mga katangian na dapat sundin upang mabuo buong ikot, ay medyo mas tiyak. Upang lumikha ng wastong loop:
- (a - 1) ay dapat na mahahati ng lahat ng prime factor m
- (a - 1) ay dapat na mahahati ng 4 kung ang m ay nahahati ng 4
Ang mga katangiang ito, kasama ang tuntunin na ang m at c ay dapat na relatibong prime, ay bumubuo sa Hull-Dobell theorem. Hindi namin titingnan ang patunay nito, ngunit kung kumuha ka ng isang grupo ng iba't ibang mga halaga para sa iba't ibang mga constant, maaari kang makarating sa parehong konklusyon.
Pagpili ng binhi
Ngayon ay oras na upang pag-usapan ang tungkol sa masayang bahagi: pagpili ng paunang binhi. Maaari naming gawin itong isang pare-pareho. Maaari itong maging kapaki-pakinabang sa mga kaso kung saan kailangan mo ng mga random na numero, ngunit gusto mong maging pareho ang mga ito sa tuwing pinapatakbo mo ang programa. Halimbawa, ang paggawa ng parehong mapa para sa bawat laro.
Ang isa pang paraan ay ang kumuha ng binhi mula sa isang bagong source sa tuwing magsisimula ang programa, tulad ng isang system clock. Ito ay kapaki-pakinabang kapag kailangan mo ng isang kabuuang random na numero, tulad ng sa isang dice rolling program.
Panghuling resulta
Kapag nag-apply kami ng function sa resulta nito nang ilang beses, nakakakuha kami ng recurrence relation. Isulat natin ang ating formula gamit ang recursion.
Isang malinaw at maginhawang online number generator na ginagamit sa Kamakailan lamang katanyagan. Ito ay pinaka-malawak na ginamit sa mga guhit ng premyo sa sa mga social network,sa mga gumagamit.
Sikat din ito sa ibang lugar. Mayroon din kaming alinman sa mga password at numero.
Ang aming online na random number generator.
Ang aming randomizer generator ay hindi nangangailangan ng pag-download nito sa iyong personal na PC. Ang lahat ay nangyayari sa online number generator mode. Tukuyin lamang ang mga parameter tulad ng: online na hanay ng numero kung saan ang mga numero ay random na pipiliin. Ipahiwatig din ang bilang ng mga numero na pipiliin.
Halimbawa, mayroon kang isang pangkat ng VKontakte. Sa grupo ay mananalo ka ng 5 premyo sa bilang ng mga kalahok na nag-repost ng post. Gamit ang isang espesyal na aplikasyon, nakatanggap kami ng listahan ng mga kalahok. Ang bawat isa ay itinalaga ng sarili nitong serial number para sa mga online na numero.
Ngayon pumunta kami sa aming online generator at ipahiwatig ang hanay ng mga numero (bilang ng mga kalahok). Halimbawa, itinakda namin na 5 numero ang kailangan online, dahil mayroon kaming 5 premyo. Ngayon, i-click ang pindutan ng pagbuo. Pagkatapos ay makakakuha tayo ng 5 random na numero online, mula 1 hanggang 112 kasama. Magtutugma ang nabuong 5 numero sa online serial number limang kalahok na naging mga nanalo sa drawing. Ang lahat ay simple at maginhawa.
Ang isa pang bentahe ng random number generator ay ang lahat ng mga numero sa online ay random na inisyu. Iyon ay, hindi posible na maimpluwensyahan ito, o kalkulahin kung anong numero ang susunod. Ano ang ibig sabihin ng sabihin, tapat at maaasahan, at ang administrasyon, na nagbibigay ng mga premyo gamit ang aming libreng generator, ay tapat at disente sa katauhan ng mga kalahok sa kumpetisyon. At kung nagdududa ka tungkol sa anumang desisyon, maaari mong gamitin ang aming
Bakit ang random number generator ang pinakamahusay?
Sa katotohanan ay generator ng numero online available sa anumang device at palaging online. Maaari mong lubos na matapat na bumuo ng anumang numero para sa anumang ideya na mayroon ka. At gamitin ang parehong para sa proyekto generator ng random na numero online. Lalo na kung kailangan mong matukoy ang nanalo sa isang laro o para sa isa pang numero online. Sa katotohanan ay generator ng random na numero bumubuo ng anumang mga numero nang random nang walang mga algorithm. Ito ay mahalagang kapareho ng para sa mga numero.
Random number generator online ng libre!
Random number generator online na libre para sa lahat. Hindi mo kailangang mag-download o bumili ng anuman generator ng random na numero online para sa draw. Kailangan mo lang pumunta sa aming website at makuha ang random na resulta na kailangan mo. Hindi lang tayo meron generator ng random na numero ngunit kailangan din ng marami at tiyak na tutulong sa iyo na manalo sa lotto. Ang isang tunay na online random number generator para sa mga lottery ay ganap na randomness. Na kayang ibigay sa iyo ng aming site.
Random na numero online
Kung naghahanap ka ng random na numero online, ginawa namin ang mapagkukunang ito para lang sa iyo. Patuloy naming pinapabuti ang aming mga algorithm. Dito mo makukuha ang tunay generator ng random na numero. Magbibigay ito ng anumang mga pangangailangan tulad ng random generator na kailangan mo nang walang bayad at anumang oras. Bumuo ng mga random na numero online sa amin. Laging siguraduhin na ang bawat numero na nabuo ay ganap na random.
Random na numero generator
Ang aming random number generator ay random na pumipili ng mga numero nang random. Hindi mahalaga kung anong araw o oras ang mayroon ka sa iyong computer. Ito ay isang tunay na bulag na pagpipilian. Ang random generator ay nag-shuffle lang random order lahat ng numero. At pagkatapos ay random na pinipili nito ang bilang ng mga random na numero na iyong tinukoy mula sa kanila. Minsan ang mga numero ay maaaring ulitin, na nagpapatunay ng kumpletong randomness ng random number generator.
Random online
Ang random ay ang pinakatiyak na opsyon para sa isang draw. Ang online generator ay talagang isang random na pagpipilian. Ikaw ay protektado mula sa anumang impluwensya sa pagpili ng isang random na numero. Sa pamamagitan ng pag-film ng proseso nang random online na pagpili panalo sa video. Iyon lang ang kailangan mo. Ayusin ang mga patas na sweepstakes online gamit ang aming online generator numero. Makakakuha ka ng mga nanalo at nasisiyahang mga manlalaro. At natutuwa kami na napasaya ka namin gamit ang aming random generator.
Mangyaring tulungan ang serbisyo sa isang click: Sabihin sa iyong mga kaibigan ang tungkol sa generator!
Online number generator sa 1 click
Ang generator ng random na numero, na ipinakita sa aming website, ay napaka-maginhawa. Halimbawa, maaari itong gamitin sa mga sweepstakes at lottery upang matukoy ang mananalo. Ang mga nanalo ay tinutukoy sa ganitong paraan: ang programa ay gumagawa ng isa o higit pang mga numero sa anumang hanay na tinukoy mo. Ang mga mapanlinlang na resulta ay maaaring maalis kaagad. At salamat dito, ang nagwagi ay tinutukoy ng isang matapat na pagpipilian.
Minsan ito ay kinakailangan upang makakuha ng isang tiyak na bilang ng mga random na numero nang sabay-sabay. Halimbawa, gusto kong punan tiket sa lottery"4 sa 35", nagtitiwala sa pagkakataon. Maaari mong suriin: kung naghagis ka ng barya ng 32 beses, ano ang posibilidad na 10 reverses ay lilitaw sa isang hilera (mga ulo/buntot ay maaaring italaga ang mga numero 0 at 1)?
Random na numero online na pagtuturo ng video - randomizer
Ang aming number generator ay napakadaling gamitin. Hindi ito nangangailangan ng pag-download ng isang programa sa iyong computer - maaari itong magamit online. Upang makuha ang numero na kailangan mo, kailangan mong itakda ang hanay ng mga random na numero, ang dami at, kung ninanais, ang number separator at alisin ang mga pag-uulit.
Upang makabuo ng mga random na numero sa isang partikular na hanay ng dalas:
- Pumili ng hanay;
- Tukuyin ang bilang ng mga random na numero;
- Ang function na "Number separator" ay nagsisilbi para sa kagandahan at kaginhawahan ng kanilang pagpapakita;
- Kung kinakailangan, paganahin/huwag paganahin ang mga pag-uulit gamit ang checkbox;
- I-click ang button na "Bumuo".
Bilang resulta, makakatanggap ka ng mga random na numero sa isang ibinigay na hanay. Ang resulta ng number generator ay maaaring kopyahin o ipadala sa pamamagitan ng e-mail. Pinakamabuting kumuha ng screenshot o video itong proseso henerasyon. Ang aming randomizer ay malulutas ang anuman sa iyong mga problema!
Ang mga numero ay kasama namin kahit saan - mga numero ng bahay at apartment, mga numero ng telepono, mga numero ng kotse, mga numero ng pasaporte, plastic card, mga petsa, mga password Email. Pinipili namin ang ilang kumbinasyon ng mga numero sa aming sarili, ngunit karamihan ay nakukuha namin sa pamamagitan ng pagkakataon. Nang hindi namamalayan, gumagamit kami ng mga random na nabuong numero araw-araw. Kung makaisip tayo ng mga PIN code, ang mga natatanging credit o salary card code ay bubuo ng mga maaasahang system na nagbubukod ng access sa mga password. Ang mga generator ng random na numero ay nagbibigay ng seguridad sa mga lugar na nangangailangan ng bilis ng pagproseso, seguridad, at pagsasarili ng data.
Ang proseso ng pagbuo ng mga pseudorandom na numero ay napapailalim sa ilang mga batas at ginamit sa mahabang panahon, halimbawa, sa mga loterya. Noong nakaraan, ang mga pagguhit ay isinasagawa gamit ang mga makina ng lottery o lote. Ngayon sa maraming bansa, ang mga nanalong numero ng mga loterya ng estado ay tiyak na tinutukoy ng isang hanay ng mga nabuong random na numero.
Mga kalamangan ng pamamaraan
Kaya, ang isang random number generator ay isang independiyenteng modernong mekanismo para sa random na pagtukoy ng mga kumbinasyon ng mga numero. Ang pagiging natatangi at pagiging perpekto ng pamamaraang ito ay nakasalalay sa imposibilidad ng panlabas na interbensyon sa proseso. Ang generator ay isang hanay ng mga programa na binuo, halimbawa, sa mga diode ng ingay. Ang aparato ay bumubuo ng isang stream ng random na ingay, ang kasalukuyang mga halaga ay na-convert sa mga numero at mga kumbinasyon ng form.
Ang pagbuo ng mga numero ay nagbibigay ng mga instant na resulta - ito ay tumatagal ng ilang segundo upang lumikha ng isang kumbinasyon. Kung pag-uusapan natin ang tungkol sa mga lottery, malalaman kaagad ng mga kalahok kung ang numero ng tiket ay tumutugma sa nanalo. Ito ay nagpapahintulot sa mga guhit na isagawa nang madalas hangga't gusto ng mga kalahok. Ngunit ang pangunahing bentahe ng pamamaraan ay ang unpredictability nito at ang imposibilidad ng pagkalkula ng algorithm para sa pagpili ng mga numero.
Paano nabuo ang mga pseudorandom na numero
Sa katunayan, ang mga random na numero ay hindi random - ang serye ay nagsisimula sa isang ibinigay na numero at nabuo ng isang algorithm. Ang isang pseudorandom number generator (PRNG o PRNG - pseudorandom number generator) ay isang algorithm na bumubuo ng isang sequence na, sa unang tingin, ay hindi kaugnay na mga numero, karaniwang napapailalim sa isang pare-parehong pamamahagi. Sa computer science, ang mga pseudorandom na numero ay ginagamit sa maraming aplikasyon: cryptography, pagmomolde ng simulation, Monte Carlo method, atbp. Ang kalidad ng resulta ay depende sa mga katangian ng PRNG.
Ang pinagmulan ng henerasyon ay maaaring pisikal na ingay mula sa cosmic radiation hanggang sa ingay sa isang risistor, ngunit ang mga naturang device ay halos hindi kailanman ginagamit sa mga aplikasyon ng seguridad sa network. Sa mga cryptographic application na ginagamit nila mga espesyal na algorithm, na bumubuo ng mga pagkakasunud-sunod na hindi maaaring random sa istatistika. Gayunpaman, ang isang maayos na napiling algorithm ay maaaring makabuo ng mga serye ng mga numero na pumasa sa karamihan ng mga pagsubok sa randomness. Ang panahon ng pag-uulit sa naturang mga pagkakasunud-sunod ay mas malaki kaysa sa agwat ng pagtatrabaho kung saan kinukuha ang mga numero.
Maraming modernong processor ang naglalaman ng PRNG, gaya ng RdRand. Bilang kahalili, ang mga hanay ng mga random na numero ay nilikha at nai-publish sa isang beses na pad (diksyonaryo). Ang pinagmulan ng mga numero sa kasong ito ay limitado at hindi nagbibigay ng kumpletong seguridad sa network.
Kasaysayan ng PRNG
Maaaring isaalang-alang ang isang prototype ng random number generator larong board Senet, common sa Sinaunang Ehipto noong 3500 BC. Ayon sa mga kondisyon, dalawang manlalaro ang lumahok, ang mga galaw ay natukoy sa pamamagitan ng paghagis ng apat na flat black at white sticks - sila ay isang uri ng PRNG noong panahong iyon. Ang mga stick ay itinapon sa parehong oras, at ang mga puntos ay binibilang: kung ang isa ay nahulog sa puting bahagi, 1 puntos at isang dagdag na paglipat, dalawang puti - dalawang puntos, at iba pa. Ang pinakamataas na resulta ng limang puntos ay natanggap ng manlalaro na naghagis ng apat na stick na may itim na bahagi.
Sa ngayon, ang generator ng ERNIE ay ginagamit nang maraming taon sa UK para sa mga draw sa lottery. Mayroong dalawang pangunahing pamamaraan para sa pagbuo ng mga panalong numero: linear congruent at additive congruent. Ang mga ito at iba pang mga pamamaraan ay batay sa prinsipyo ng random na pagpili at ibinibigay ng software na walang katapusang gumagawa ng mga numero, ang pagkakasunud-sunod na imposibleng hulaan.
Ang PRNG ay patuloy na gumagana, halimbawa sa mga slot machine. Ayon sa batas ng US, ito ay isang mandatoryong kondisyon na dapat sundin ng lahat ng software provider.
- Pagtuturo
Naisip mo na ba kung paano gumagana ang Math.random()? Ano ang isang random na numero at paano ito nakuha? Isipin ang isang tanong sa pakikipanayam - isulat ang iyong random number generator sa ilang linya ng code. Kaya, ano ito, isang aksidente at posible bang mahulaan ito?
Ako ay labis na nabighani sa iba't ibang mga IT puzzle at gawain, at ang random number generator ay isa sa mga gawaing ito. Kadalasan sa aking telegram channel ay inaayos ko ang lahat ng uri ng palaisipan at iba't ibang gawain mula sa mga panayam. Ang problema sa random number generator ay nakakuha ng mahusay na katanyagan at nais kong ipagpatuloy ito sa kalaliman ng isa sa mga makapangyarihang mapagkukunan ng impormasyon - iyon ay, dito sa Habré.
Ang materyal na ito ay magiging kapaki-pakinabang sa lahat ng mga front-end at Node.js na mga developer na nasa pinakamainam na teknolohiya at gustong pumasok sa isang blockchain project/startup kung saan ang mga tanong tungkol sa seguridad at cryptography ay hindi bababa sa pangunahing antas, nagtatanong pa sila sa mga front-end na developer.
Pseudo-random number generator at random number generator
Upang makakuha ng isang bagay na random, kailangan namin ng isang mapagkukunan ng entropy, isang mapagkukunan ng ilang kaguluhan kung saan gagamitin namin upang bumuo ng randomness.Ang source na ito ay ginagamit upang makaipon ng entropy at pagkatapos ay makakuha mula dito ng isang paunang halaga (seed), na kinakailangan para sa random number generators (RNG) upang makabuo ng mga random na numero.
Gumagamit ang Pseudo-Random Number Generator ng iisang paunang halaga, kaya ang pseudo-randomness nito, habang ang Random Number Generator ay palaging bumubuo ng random na numero, na mayroong mataas na kalidad sa simula. random variable, na kinuha mula sa iba't ibang pinagmumulan ng entropy.
Ang entropy ay isang sukatan ng kaguluhan. Ang entropy ng impormasyon ay isang sukatan ng kawalan ng katiyakan o hindi mahuhulaan ng impormasyon.Lumalabas na para makalikha ng pseudo-random na sequence kailangan namin ng algorithm na bubuo ng isang tiyak na sequence batay sa isang tiyak na formula. Ngunit ang gayong pagkakasunud-sunod ay maaaring mahulaan. Gayunpaman, isipin natin kung paano natin maisusulat ang sarili nating random number generator kung wala tayong Math.random()
Ang PRNG ay may ilang algorithm na maaaring kopyahin.
Ang RNG ay ang proseso ng pagkuha ng mga numero nang buo mula sa ilang uri ng ingay, ang kakayahang kalkulahin kung alin ang nagiging zero. Kasabay nito, ang RNG ay may ilang mga algorithm para sa pagpantay-pantay ng pamamahagi.
Nakabuo kami ng sarili naming PRNG algorithm
Ang pseudorandom number generator (PRNG) ay isang algorithm na bumubuo ng isang pagkakasunud-sunod ng mga numero na ang mga elemento ay halos independiyente sa isa't isa at sumusunod sa isang ibinigay na pamamahagi (karaniwan ay pare-pareho).Maaari tayong kumuha ng pagkakasunod-sunod ng ilang numero at kunin ang modulus ng numero mula sa kanila. Ang pinakasimpleng halimbawa na naiisip. Kailangan nating isipin kung aling sequence ang kukunin at ang module mula sa kung ano. Kung direkta ka lang mula 0 hanggang N at modulus 2, makakakuha ka ng generator ng 1 at 0:
Function* rand() ( const n = 100; const mod = 2; let i = 0; while (true) ( yield i % mod; if (i++ > n) i = 0; ) ) let i = 0; para sa (hayaan ang x ng rand()) ( kung (i++ > 100) break; console.log(x); )
Binubuo ng function na ito ang sequence 01010101010101... at hindi man lang ito matatawag na pseudo-random. Para maging random ang isang generator, dapat itong pumasa sa susunod na bit test. Ngunit wala kaming ganoong gawain. Gayunpaman, kahit na walang anumang mga pagsubok maaari nating mahulaan ang susunod na pagkakasunud-sunod, na nangangahulugan na ang gayong algorithm ay hindi angkop, ngunit tayo ay nasa tamang direksyon.
Paano kung kumuha tayo ng ilang kilalang ngunit hindi linear na pagkakasunud-sunod, halimbawa ang numerong PI. At bilang halaga para sa module ay kukuha kami ng hindi 2, ngunit iba pa. Maaari mo ring isipin ang tungkol sa pagbabago ng halaga ng modyul. Ang pagkakasunud-sunod ng mga digit sa Pi ay itinuturing na random. Ang generator ay maaaring gumana gamit ang mga numero ng Pi simula sa ilang hindi kilalang punto. Isang halimbawa ng naturang algorithm, na may PI-based na sequence at variable na module:
Const vector = [...Math.PI.toFixed(48).replace(".","")]; function* rand() ( para sa (hayaan i=3; i<1000; i++) {
if (i >99) i = 2; para sa (hayaan n=0; n
Nakakuha kami ng generator ng mga numero mula 0 hanggang 9, ngunit hindi pantay ang pamamahagi at bubuo ito ng parehong pagkakasunud-sunod sa bawat oras.
Hindi natin maaaring kunin ang numerong Pi, ngunit ang oras sa numerical na representasyon at isaalang-alang ang numerong ito bilang isang pagkakasunud-sunod ng mga numero, at upang matiyak na ang pagkakasunod-sunod ay hindi mauulit sa bawat oras, babasahin natin ito mula sa dulo. Sa kabuuan, ang aming algorithm para sa aming PRNG ay magiging ganito:
Function* rand() ( let newNumVector = () => [...(+bagong Petsa)+""].reverse(); let vector = newNumVector(); let i=2; while (true) ( kung ( i++ > 99) i = 2;< vector.length) yield (vector[n] % i);
vector = newNumVector();
}
}
// TEST:
let i = 0;
for (let x of rand()) {
if (i++ >100) break; console.log(x)
Ito ay mukhang isang pseudo-random number generator. At ang parehong Math.random() ay isang PRNG, pag-uusapan natin ito sa ibang pagkakataon. Bukod dito, sa bawat oras na nakakakuha kami ng ibang unang numero.
Sa totoo lang sa mga ito mga simpleng halimbawa Maiintindihan mo kung paano gumagana ang mas kumplikadong mga generator ng random na numero. At mayroon ding mga nakahanda na algorithm. Bilang halimbawa, tingnan natin ang isa sa mga ito — ito ang Linear Congruent PRNG (LCPRNG).
Linear congruent PRNG
Ang linear congruent PRNG (LCPRNG) ay isang karaniwang paraan para sa pagbuo ng mga pseudorandom na numero. Hindi ito malakas sa cryptographically. Ang pamamaraang ito ay binubuo ng pagkalkula ng mga tuntunin ng isang linear na paulit-ulit na sequence modulo ilang natural na numero m, na ibinigay ng formula. Ang resultang sequence ay depende sa pagpili ng panimulang numero — i.e. buto. Sa iba't ibang kahulugan ang binhi ay gumagawa ng iba't ibang pagkakasunud-sunod ng mga random na numero. Isang halimbawa ng pagpapatupad ng naturang algorithm sa JavaScript:Const a = 45; const c = 21; const m = 67; var seed = 2; const rand = () => seed = (a * seed + c) % m; para sa(hayaan i=0; i<30; i++)
console.log(rand())
Maraming mga programming language ang gumagamit ng LCPRNG (ngunit hindi eksakto ang algorithm na ito(!)).
Tulad ng nabanggit sa itaas, ang gayong pagkakasunud-sunod ay maaaring mahulaan. Kaya bakit kailangan natin ng PRNG? Kung pag-uusapan natin ang tungkol sa seguridad, ang PRNG ay isang problema. Kung pinag-uusapan natin ang iba pang mga gawain, kung gayon ang mga katangiang ito ay maaaring maging isang plus. Halimbawa, para sa iba't ibang mga special effect at graphics animation, maaaring kailanganin mong madalas na tumawag nang random. At dito mahalaga ang pamamahagi ng mga kahulugan at pagganap! Hindi maaaring ipagmalaki ng mga secure na algorithm ang bilis.
Ang isa pang pag-aari ay reproducibility. Ang ilang mga pagpapatupad ay nagpapahintulot sa iyo na tukuyin ang isang binhi, at ito ay lubhang kapaki-pakinabang kung ang pagkakasunud-sunod ay dapat na ulitin. Ang pagpaparami ay kailangan sa mga pagsubok, halimbawa. At marami pang ibang bagay na hindi nangangailangan ng secure na RNG.
Paano gumagana ang Math.random().
Ang Math.random() method ay nagbabalik ng pseudo-random na floating point number mula sa range = crypto.getRandomValues(new Uint8Array(1)); console.log(rvalue)
Ngunit, hindi tulad ng Math.random() PRNG, ang pamamaraang ito ay napaka-resource-intensive. Ang katotohanan ay ang generator na ito ay gumagamit ng mga system call sa OS upang makakuha ng access sa mga mapagkukunan ng entropy (mac address, CPU, temperatura, atbp...).
![I-bookmark at Ibahagi](http://s7.addthis.com/static/btn/v2/lg-share-en.gif)