<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Karolio tinklaraštis &#187; atsitiktinumas</title>
	<atom:link href="https://karolio.lt/tag/atsitiktinumas/feed" rel="self" type="application/rss+xml" />
	<link>https://karolio.lt</link>
	<description>bandau apsimesti protingu</description>
	<lastBuildDate>Wed, 17 Jul 2019 22:21:52 +0000</lastBuildDate>
	<language>lt-LT</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.2</generator>
		<item>
		<title>Atsitiktiniai skaičiai: kokie jie yra ir kaip jie gaunami?</title>
		<link>https://karolio.lt/programavimas/atsitiktiniai-skaiciai-kokie-jie-yra-ir-kaip-jie-gaunami</link>
		<comments>https://karolio.lt/programavimas/atsitiktiniai-skaiciai-kokie-jie-yra-ir-kaip-jie-gaunami#comments</comments>
		<pubDate>Fri, 07 Oct 2011 00:05:55 +0000</pubDate>
		<dc:creator>Karolis</dc:creator>
				<category><![CDATA[Programavimas]]></category>
		<category><![CDATA[atsitiktinumas]]></category>
		<category><![CDATA[loterija]]></category>
		<category><![CDATA[pseudorandom]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[tikimybės]]></category>

		<guid isPermaLink="false">http://karolio.lt/?p=44</guid>
		<description><![CDATA[Programuojant labai dažnai tenka susidurti su atvejais, kada prireikia sugeneruoti kokį nors atsitiktinį skaičių ar simbolį. Pvz. sukūrus „monetos metimo“ loteriją, juk realiai niekas ten jokios monetos nemėto, tiesiog kompiuteris sugeneruoja atsitiktinį skaičių (pvz. 0 ir 1) ir galiausiai vėliau išvedamas rezultatas iš to skaičiaus – tarkim, jeigu rezultatas yra 0, išvedamas rezultatas „Iškrito herbas“, [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://karolio.lt/wp-content/uploads/2011/10/kauliukai.jpg"><img class="alignleft size-medium wp-image-47" title="kauliukai" src="http://karolio.lt/wp-content/uploads/2011/10/kauliukai-300x199.jpg" alt="" width="300" height="199" /></a>Programuojant labai dažnai tenka susidurti su atvejais, kada prireikia sugeneruoti kokį nors atsitiktinį skaičių ar simbolį. Pvz. sukūrus „monetos metimo“ loteriją, juk realiai niekas ten jokios monetos nemėto, tiesiog kompiuteris sugeneruoja atsitiktinį skaičių (pvz. 0 ir 1) ir galiausiai vėliau išvedamas rezultatas iš to skaičiaus – tarkim, jeigu rezultatas yra 0, išvedamas rezultatas „Iškrito herbas“, o jeigu rezultatas yra 1, tai išvedamas rezultatas „Iškrito skaičius“. Visi žinome, kad kompiuteris yra visiškai logiška mašina, t.y. kompiuteris mums niekad neišves, kad 2+2 yra 5. Taigi, kokiu būdu logikai ir matematikai pavaldi mašina gali sukurti atsitiktinį skaičių?</p>
<p>Problema generuojant atsitiktinius skaičius atsirado vos atsiradus pirmiesiems mikroprocesoriams. Pirmiesiems programuotojams teko ilgokai pasukti galvas, kad sugalvotų, kaip daiktą, kuris visiškai paklūsta matematikai, priversti sugeneruoti atsitiktinį skaičių. Dabar programuotojams tame didelių problemų nekyla – praktiškai kiekviena programavimo kalba turi Random(); funkciją, kuri sugeneruoja tą skaičių ir visiškai nereikia galvoti apie kažkokias matematines formules, kurios skirtos tų skaičių generavimui. Neretas programuotojas (ypač pradedantysis) net nežino, kokiu būdu tie skaičiai yra sugeneruojami.</p>
<p>Atsitiktinių skaičių rūšys yra dvi – tikrieji atsitiktiniai skaičiai ir pseudo-atsitiktiniai skaičiai (pseudo-random). Tikrieji atsitiktiniai skaičiai yra sugeneruojami matuojant visiškai atsitiktinius procesus (branduolinį skilimą, atmosferinį triukšmą ir pan.). Tokiems skaičiams generuoti reikia papildomos įrangos, kaip pvz. <a title="Geiger-Muller kamera" href="http://en.wikipedia.org/wiki/Geiger-Muller_tube" target="_blank">Geiger–Müller kameros</a>, kuri fiksuoja branduolinį skilimą ir naudojantis šia informacija galima sugeneruoti visiškai atsitiktinį skaičių. Pseudo-atsitiktinių skaičių generavimas yra loginis metodas, dažniausiai tai yra matematinė formulė. Paprastai tariant, į formulę įstatomas „seed“ ir iš to yra gaunama atsitiktinių skaičių seka. „Seed“ yra nežinomasis formulėje, tik jį pakeitus kažkokiu skaičiumi yra gaunamas atsakymas. Kiekvienąkart įvedus tą patį „seed“, visad gaunama lygiai tokia pati atsitiktinių skaičių seka. Pvz. jeigu įstatysime į formulę 5, visad gausime seką tarkim 147890154278&#8230;, taigi norint kaskart gauti vis skirtingą atsitiktinių skaičių seką, reikia, kad „seed“ pasikeistų. Tokiu atveju turbūt kyla klausimas, kokiu būdu kompiuteris gali parinkti atsitiktinį „seed“, kad seka kiekvieną kartą būtų visiškai atsitiktinė? Atsakymas paprastas – negali, todėl dažnai kaip „seed“ yra naudojama dabartinė sistemos data ir laikas <a title="Unix išraiška" href="http://en.wikipedia.org/wiki/Unix_time" target="_blank">unix išraiška</a>. Unix išraiška reiškia sekundžių kiekį, kuris praėjo nuo 1970-ųjų metų sausio pirmos dienos.</p>
<p>Vienas iš pirmųjų pseudo-atsitiktinių skaičių generavimo būdų buvo <a title="John von Neumann" href="http://en.wikipedia.org/wiki/John_von_Neumann" target="_blank">John von Neumann</a> 1946-aisiais išrastas metodas, vadinamas <a title="Middle-square metodas" href="http://en.wikipedia.org/wiki/Middle-square_method" target="_blank">middle-square metodu</a>. Metodas yra labai paprastas – tiesiog paimamas koks nors skaičius kaip „seed“, jis pakeliamas kvadratu ir viduriniai gauto rezultato skaičiai yra laikomi „atsitiktiniais“. Tuo tarpu, jei reikia sugeneruoti daugiau atsitiktinių skaičių, ankstesnis rezultatas yra panaudojamas, kaip seed, t.y. jis vėl pakeliamas kvadratu ir vėl imami gauto rezultato viduriniai skaičiai. Procesas kartojamas tiek kartų, kiek reikia. Šis metodas veikia tol, kol skaičių reikia labai nedaug, nes vėliau skaičiai gautoje sekoje pradeda kartotis. Pvz. paėmus nulį kaip pradinę reikšmę, skaičiai pradeda kartotis iškart ir gaunama reikšmė būna 0000&#8230; Šiuo metu yra rasta daug efektyvesnių pseudo-atsitiktinių skaičių generavimo būdų.</p>
<p>Kur yra naudojami pseudo-atsitiktiniai skaičiai ir kur geriau jų nenaudoti? Pseudo-atsitiktiniai skaičiai labai puikiai tinka statistikai, nes kiekvieno iš skaičių kritimo tikimybė yra lygiai tokia pati. T.y. nebus taip, kad sugeneravus 1 000 000 pseudo-atsitiktinių skaičių eilutę nuo 0 iki 1, gautame rezultate vienetas kartosis 95% kartų, o nulis – tik 5%. Gautame rezultate tikimybių nuokrypis nebus labai didelis, o bus „realus“, pvz 49% nulių ir 51% vienetų. Kadangi šis metodas yra grynai matematinis, visų skaičių tikimybės yra labai tikslios. Tačiau, nors vizualiai pseudo-atsitiktiniai skaičiai visiškai niekuo nesiskiria nuo realių atsitiktinių skaičių, šis metodas dažnai nėra naudojamas didelėse loterijose, kai kuriuose internetiniuose pokerio tinklalapiuose, nes teoriškai gali būti nuspėjamas. Tereikia žinot metodą, kuriuo naudojantis yra sugeneruojami skaičiai ir „seed“, kuris naudojamas (o tai dažnai būna, kaip minėjau, sistemos data ir laikas). Tiriant ilgą atsitiktinių skaičių eilutę gautą iš kokios nors virtualios ar realios loterijos, galima atspėti metodą ir nustatyti naudojamą „seed“, kaip neseniai <a title="Nori laimėti loterijoje? Reikia ne sėkmės, o matematikos žinių! - Technologijos.lt" href="http://www.technologijos.lt/n/mokslas/matematika/S-21048/straipsnis?name=S-21048&amp;l=2&amp;p=1" target="_blank">padarė kanadietis statistikas Mohanas Srivastava</a>, kuris pastebėjo tendencijas ir nustatė algoritmą loterijoje. Taigi, jeigu ruošiatės kurti kažkokią loteriją, geriau nenaudokite pseudo-atsitiktinių skaičių generatoriaus, nes Jūsų loterija gali būti paprasčiausiai „nulaužta“. <img src='https://karolio.lt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>P.S. Žinau, kad gal kai kur mano rašymo stilius gali būti kiek per sudėtingas, todėl, jei kas nors neaišku – praneškite komentaruose. <img src='https://karolio.lt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>https://karolio.lt/programavimas/atsitiktiniai-skaiciai-kokie-jie-yra-ir-kaip-jie-gaunami/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
