<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.simulace.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xkocj44</id>
	<title>Simulace.info - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.simulace.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xkocj44"/>
	<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php/Special:Contributions/Xkocj44"/>
	<updated>2026-07-27T13:14:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://www.simulace.info/index.php?title=Spot%C5%99eba_surovin_ve_fastfoodu_(Simprocess)&amp;diff=18705</id>
		<title>Spotřeba surovin ve fastfoodu (Simprocess)</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Spot%C5%99eba_surovin_ve_fastfoodu_(Simprocess)&amp;diff=18705"/>
		<updated>2019-06-11T15:39:48Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''Název simulace:''' Spotřeba surovin ve fastfoodu&lt;br /&gt;
* '''Předmět:''' 4IT495 Simulace systémů (LS 2018/2019)&lt;br /&gt;
* '''Autor:''' Bc. Josef Kočí&lt;br /&gt;
&lt;br /&gt;
= Zadání =&lt;br /&gt;
Protože již 4 roky pracuji ve společnosti AmRest, z pozice hlavního instruktora mám přístup k manažerským systémům, kde lze sledovat data o prodeji, počtu objednávek v různých hodinách a spotřebu jednotlivých ingrediencí. Mým cílem je část této reality zachytit v programu Simprocess, zobrazit v něm proces na jednotlivých ingrediencích, jejich objednání a naskladnění ráno, jejich průběžné vyskladňování, použití do procesu až k vydání zákazníkům. Proces tak zachytí, kolik dle simulací průměrně zůstává nevyužitých ingrediencí, jak dlouho přibližně zákazníci čekají a pokusím se případně i o analýzu zlepšení tzv. SOS (Speed of Service).&lt;br /&gt;
Prostředí bude přímo z KFC, jelikož ale Simprocess má limitované množství entit, nezachytím bohužel všechny suroviny, které se v KFC používají. Proto se pokusím zachytit ty nejdůležitější. Mezi hlavní cíl patří monitoring zbylých surovin a pokusit se o minimalizaci jejich množství, které na konci zbyde. Budu tedy hledat kritická místa, o nichž pak sepíšu zprávu. Mým cílem tedy bude dosáhnutí co nejmenšího zbytku surovin na konci dne. Z vlastní zkušenosti vím, že není možné skončit s naprosto prázdným stavem, neboť to ve výsledku může negativně ovlivnit SOS v průběhu posledních hodin. V modelu se pochopitelně pokusím o co nejvěrnější proces, tedy sendviče se nějakou dobu zpracovávají, maso se nějakou dobu připravuje a pak nějakou dobu smaží. Uvidím, jak detailně se mi proces povede zachytit.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Vstupní data jako množství zákazníků v jedno hodinách či spotřeba ingrediencí sice budou náhodná (avšak vzájemně spolupracující), nicméně budu vycházet z reálných dat z manažerských systémů tak, aby počty objednávek na různé hodiny přibližně seděly.&lt;br /&gt;
&lt;br /&gt;
= Postup =&lt;br /&gt;
[[File:Bodring.PNG|thumb|right|Generátor ingrediencí]]&lt;br /&gt;
Během své práce jsem si zjistil z dat, kolik produktů a surovin se během dne prodá. Na základě toho jsem vytvořil tabulku prodejů, ze kterých měl Simprocess zajišťovat prodej. Protože prodeje nejsou každý den stejné, sledoval jsem v praxi 9 dní (přes systém) prodejů, ze kterých jsem pak spočítal průměrný prodej daných produktů, směrodatnou odchylku a na základě toho zjistil i spotřebu surovin.&lt;br /&gt;
Do generátoru jsem poté vložil data o tom, kdy přijíždí závoz (úterý, středa, pátek a sobota v 6 ráno) a kolik ingrediencí pravidelně přiváží. &lt;br /&gt;
Stejně tak je vytvořen i závoz masa, který také přiváží jednotlivé druhy kuřecího masa.&lt;br /&gt;
Každý z generátorů následně odevzdává své ingredience dané pozici. Zelenina, sýry, omáčky a jiné, jsou dopraveny na servis, maso zas na kuchyň, přílohy k packerovi.&lt;br /&gt;
&lt;br /&gt;
= Pozice na kuchyni =&lt;br /&gt;
[[File:Prodeje.PNG|thumb|right|Tabulka prodejů za 9 dní + rychlosti zpracování objednávek]]&lt;br /&gt;
Na kuchyni poté probíhá příprava masa, kterou jsem z hlediska firemního tajemství musel trošku pozměnit. Proces jinak vypadá přibližně stejně jako v realitě a neovlivňuje prodej.&lt;br /&gt;
Po přípravě masa je maso naskladněno do příslušných balíčků dle reálných počtů, jak je dodavatel přiváží. Následně jsou vyskladněny, obaleny (opět dle rychlostí) a smaženy.&lt;br /&gt;
Po usmažení jsou dopraveny do holdingu, kde čekají na využití.&lt;br /&gt;
&lt;br /&gt;
= Pozice packer =&lt;br /&gt;
Pozice packer je pozice, kde se objednávky sestavují, doplňují přílohami a odchází ze systému pryč.&lt;br /&gt;
&lt;br /&gt;
=Výsledek=&lt;br /&gt;
Protože trial verze umožňovala pouze 5 ingrediencí, byla úloha zpracovávána v učebně SB 207. Bohužel jsem zde narazil na problém, přes který se nedalo dostat dál, a sice limit procesů. I po zjednodušení některých činností se nepodařilo úlohu dotáhnout do zdárného konce pro svou složitost. Úloha tedy odkrývá alespoň proces pořízení surovin, přiřazení na pozice a průběh zpracování masa.&lt;br /&gt;
&lt;br /&gt;
=Závěr=&lt;br /&gt;
Úloha nedošla do zdárného konce. Buď nebyla verze v SB 207 professional, nebo je úloha pro Simprocess příliš složitá. Bohužel se jedná o úlohu, která nelze vypracovat v takovémto zadání v NetLogu.&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Spot%C5%99eba_surovin_ve_fastfoodu_(Simprocess)&amp;diff=18703</id>
		<title>Spotřeba surovin ve fastfoodu (Simprocess)</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Spot%C5%99eba_surovin_ve_fastfoodu_(Simprocess)&amp;diff=18703"/>
		<updated>2019-06-11T15:36:41Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Xkocj44 přesunul stránku Spotřeba surovin ve fastfoodu (Simprocess na Spotřeba surovin ve fastfoodu (Simprocess)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''Název simulace:''' Spotřeba surovin ve fastfoodu&lt;br /&gt;
* '''Předmět:''' 4IT495 Simulace systémů (LS 2018/2019)&lt;br /&gt;
* '''Autor:''' Bc. Josef Kočí&lt;br /&gt;
&lt;br /&gt;
= Zadání =&lt;br /&gt;
Protože již 4 roky pracuji ve společnosti AmRest, z pozice hlavního instruktora mám přístup k manažerským systémům, kde lze sledovat data o prodeji, počtu objednávek v různých hodinách a spotřebu jednotlivých ingrediencí. Mým cílem je část této reality zachytit v programu Simprocess, zobrazit v něm proces na jednotlivých ingrediencích, jejich objednání a naskladnění ráno, jejich průběžné vyskladňování, použití do procesu až k vydání zákazníkům. Proces tak zachytí, kolik dle simulací průměrně zůstává nevyužitých ingrediencí, jak dlouho přibližně zákazníci čekají a pokusím se případně i o analýzu zlepšení tzv. SOS (Speed of Service).&lt;br /&gt;
Prostředí bude přímo z KFC, jelikož ale Simprocess má limitované množství entit, nezachytím bohužel všechny suroviny, které se v KFC používají. Proto se pokusím zachytit ty nejdůležitější. Mezi hlavní cíl patří monitoring zbylých surovin a pokusit se o minimalizaci jejich množství, které na konci zbyde. Budu tedy hledat kritická místa, o nichž pak sepíšu zprávu. Mým cílem tedy bude dosáhnutí co nejmenšího zbytku surovin na konci dne. Z vlastní zkušenosti vím, že není možné skončit s naprosto prázdným stavem, neboť to ve výsledku může negativně ovlivnit SOS v průběhu posledních hodin. V modelu se pochopitelně pokusím o co nejvěrnější proces, tedy sendviče se nějakou dobu zpracovávají, maso se nějakou dobu připravuje a pak nějakou dobu smaží. Uvidím, jak detailně se mi proces povede zachytit.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Vstupní data jako množství zákazníků v jedno hodinách či spotřeba ingrediencí sice budou náhodná (avšak vzájemně spolupracující), nicméně budu vycházet z reálných dat z manažerských systémů tak, aby počty objednávek na různé hodiny přibližně seděly.&lt;br /&gt;
&lt;br /&gt;
= Postup =&lt;br /&gt;
[[File:Bodring.PNG|thumb|right|Generátor ingrediencí]]&lt;br /&gt;
Během své práce jsem si zjistil z dat, kolik produktů a surovin se během dne prodá. Na základě toho jsem vytvořil tabulku prodejů, ze kterých měl Simprocess zajišťovat prodej. Protože prodeje nejsou každý den stejné, sledoval jsem v praxi 9 dní (přes systém) prodejů, ze kterých jsem pak spočítal průměrný prodej daných produktů, směrodatnou odchylku a na základě toho zjistil i spotřebu surovin.&lt;br /&gt;
Do generátoru jsem poté vložil data o tom, kdy přijíždí závoz (úterý, středa, pátek a sobota v 6 ráno) a kolik ingrediencí pravidelně přiváží. &lt;br /&gt;
Stejně tak je vytvořen i závoz masa, který také přiváží jednotlivé druhy kuřecího masa.&lt;br /&gt;
Každý z generátorů následně odevzdává své ingredience dané pozici. Zelenina, sýry, omáčky a jiné, jsou dopraveny na servis, maso zas na kuchyň, přílohy k packerovi.&lt;br /&gt;
&lt;br /&gt;
= Pozice na kuchyni =&lt;br /&gt;
[[File:Prodeje.PNG|thumb|right|Tabulka prodejů za 9 dní + rychlosti zpracování objednávek]]&lt;br /&gt;
Na kuchyni poté probíhá příprava masa, kterou jsem z hlediska firemního tajemství musel trošku pozměnit. Proces jinak vypadá přibližně stejně jako v realitě a neovlivňuje prodej.&lt;br /&gt;
Po přípravě masa je maso naskladněno do příslušných balíčků dle reálných počtů, jak je dodavatel přiváží. Následně jsou vyskladněny, obaleny (opět dle rychlostí) a smaženy.&lt;br /&gt;
Po usmažení jsou dopraveny do holdingu, kde čekají na využití.&lt;br /&gt;
&lt;br /&gt;
= Pozice packer =&lt;br /&gt;
Pozice packer je pozice, kde se objednávky sestavují, doplňují přílohami a odchází ze systému pryč.&lt;br /&gt;
&lt;br /&gt;
=Výsledek=&lt;br /&gt;
Protože trial verze umožňovala pouze 5 ingrediencí, byla úloha zpracovávána v učebně SB 207. Bohužel jsem zde narazil na problém, přes který se nedalo dostat dál, a sice limit procesů. I po zjednodušení některých činností se nepodařilo úlohu dotáhnout do zdárného konce pro svou složitost. Úloha tedy odkrývá alespoň proces pořízení surovin, přiřazení na pozice a průběh zpracování masa.&lt;br /&gt;
&lt;br /&gt;
=Reference=&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Spot%C5%99eba_surovin_ve_fastfoodu_(Simprocess&amp;diff=18704</id>
		<title>Spotřeba surovin ve fastfoodu (Simprocess</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Spot%C5%99eba_surovin_ve_fastfoodu_(Simprocess&amp;diff=18704"/>
		<updated>2019-06-11T15:36:41Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Xkocj44 přesunul stránku Spotřeba surovin ve fastfoodu (Simprocess na Spotřeba surovin ve fastfoodu (Simprocess)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Spotřeba surovin ve fastfoodu (Simprocess)]]&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=SS_2018/2019/cs&amp;diff=18702</id>
		<title>SS 2018/2019/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=SS_2018/2019/cs&amp;diff=18702"/>
		<updated>2019-06-11T15:35:21Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:LS 2018/2019}}&lt;br /&gt;
&lt;br /&gt;
Semestrální práce (simulace) z letního semestru 2018/2019. Sem přidejte odkaz na stránku s Vaší prací.&lt;br /&gt;
Nejprve je třeba nechat schválit [[Assignment SS 2018/2019/cs|zadání práce]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Vypracovaná témata LS 2018/2019=&lt;br /&gt;
* [[Simulace populací včel (Netlogo)]] - Michaela Trnková&lt;br /&gt;
* [[Simulace šíření spalniček (Vensim)]] - Jurij Povoroznyk, povj01&lt;br /&gt;
* [[Optimalizace centrálního skladu (Simprocess)]] - Martin Jirsa&lt;br /&gt;
* [[Simulace automobilových závodů (Netlogo)]] - [[User:Jinv00|Jinv00]] ([[User talk:Jinv00|talk]]) 16:26, 10 June 2019 (CET)&lt;br /&gt;
* [[Příjem, zpracování a vyloučení alkoholu z těla (Vensim)]] - Josef Čekan, cekj01&lt;br /&gt;
* [[Optimalizace počtu výčapov piva na štadióne (Simprocess)]] - Dominik Turak&lt;br /&gt;
* [[Simulace reklamačního oddělení (Simprocess)]] - Pavel Gregor&lt;br /&gt;
* [[Spotřeba surovin ve fastfoodu (Simprocess)]] - Josef Kočí&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Spot%C5%99eba_surovin_ve_fastfoodu_(Simprocess)&amp;diff=18701</id>
		<title>Spotřeba surovin ve fastfoodu (Simprocess)</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Spot%C5%99eba_surovin_ve_fastfoodu_(Simprocess)&amp;diff=18701"/>
		<updated>2019-06-11T15:34:58Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Created page with &amp;quot;* '''Název simulace:''' Spotřeba surovin ve fastfoodu * '''Předmět:''' 4IT495 Simulace systémů (LS 2018/2019) * '''Autor:''' Bc. Josef Kočí  = Zadání = Protože již...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''Název simulace:''' Spotřeba surovin ve fastfoodu&lt;br /&gt;
* '''Předmět:''' 4IT495 Simulace systémů (LS 2018/2019)&lt;br /&gt;
* '''Autor:''' Bc. Josef Kočí&lt;br /&gt;
&lt;br /&gt;
= Zadání =&lt;br /&gt;
Protože již 4 roky pracuji ve společnosti AmRest, z pozice hlavního instruktora mám přístup k manažerským systémům, kde lze sledovat data o prodeji, počtu objednávek v různých hodinách a spotřebu jednotlivých ingrediencí. Mým cílem je část této reality zachytit v programu Simprocess, zobrazit v něm proces na jednotlivých ingrediencích, jejich objednání a naskladnění ráno, jejich průběžné vyskladňování, použití do procesu až k vydání zákazníkům. Proces tak zachytí, kolik dle simulací průměrně zůstává nevyužitých ingrediencí, jak dlouho přibližně zákazníci čekají a pokusím se případně i o analýzu zlepšení tzv. SOS (Speed of Service).&lt;br /&gt;
Prostředí bude přímo z KFC, jelikož ale Simprocess má limitované množství entit, nezachytím bohužel všechny suroviny, které se v KFC používají. Proto se pokusím zachytit ty nejdůležitější. Mezi hlavní cíl patří monitoring zbylých surovin a pokusit se o minimalizaci jejich množství, které na konci zbyde. Budu tedy hledat kritická místa, o nichž pak sepíšu zprávu. Mým cílem tedy bude dosáhnutí co nejmenšího zbytku surovin na konci dne. Z vlastní zkušenosti vím, že není možné skončit s naprosto prázdným stavem, neboť to ve výsledku může negativně ovlivnit SOS v průběhu posledních hodin. V modelu se pochopitelně pokusím o co nejvěrnější proces, tedy sendviče se nějakou dobu zpracovávají, maso se nějakou dobu připravuje a pak nějakou dobu smaží. Uvidím, jak detailně se mi proces povede zachytit.&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Vstupní data jako množství zákazníků v jedno hodinách či spotřeba ingrediencí sice budou náhodná (avšak vzájemně spolupracující), nicméně budu vycházet z reálných dat z manažerských systémů tak, aby počty objednávek na různé hodiny přibližně seděly.&lt;br /&gt;
&lt;br /&gt;
= Postup =&lt;br /&gt;
[[File:Bodring.PNG|thumb|right|Generátor ingrediencí]]&lt;br /&gt;
Během své práce jsem si zjistil z dat, kolik produktů a surovin se během dne prodá. Na základě toho jsem vytvořil tabulku prodejů, ze kterých měl Simprocess zajišťovat prodej. Protože prodeje nejsou každý den stejné, sledoval jsem v praxi 9 dní (přes systém) prodejů, ze kterých jsem pak spočítal průměrný prodej daných produktů, směrodatnou odchylku a na základě toho zjistil i spotřebu surovin.&lt;br /&gt;
Do generátoru jsem poté vložil data o tom, kdy přijíždí závoz (úterý, středa, pátek a sobota v 6 ráno) a kolik ingrediencí pravidelně přiváží. &lt;br /&gt;
Stejně tak je vytvořen i závoz masa, který také přiváží jednotlivé druhy kuřecího masa.&lt;br /&gt;
Každý z generátorů následně odevzdává své ingredience dané pozici. Zelenina, sýry, omáčky a jiné, jsou dopraveny na servis, maso zas na kuchyň, přílohy k packerovi.&lt;br /&gt;
&lt;br /&gt;
= Pozice na kuchyni =&lt;br /&gt;
[[File:Prodeje.PNG|thumb|right|Tabulka prodejů za 9 dní + rychlosti zpracování objednávek]]&lt;br /&gt;
Na kuchyni poté probíhá příprava masa, kterou jsem z hlediska firemního tajemství musel trošku pozměnit. Proces jinak vypadá přibližně stejně jako v realitě a neovlivňuje prodej.&lt;br /&gt;
Po přípravě masa je maso naskladněno do příslušných balíčků dle reálných počtů, jak je dodavatel přiváží. Následně jsou vyskladněny, obaleny (opět dle rychlostí) a smaženy.&lt;br /&gt;
Po usmažení jsou dopraveny do holdingu, kde čekají na využití.&lt;br /&gt;
&lt;br /&gt;
= Pozice packer =&lt;br /&gt;
Pozice packer je pozice, kde se objednávky sestavují, doplňují přílohami a odchází ze systému pryč.&lt;br /&gt;
&lt;br /&gt;
=Výsledek=&lt;br /&gt;
Protože trial verze umožňovala pouze 5 ingrediencí, byla úloha zpracovávána v učebně SB 207. Bohužel jsem zde narazil na problém, přes který se nedalo dostat dál, a sice limit procesů. I po zjednodušení některých činností se nepodařilo úlohu dotáhnout do zdárného konce pro svou složitost. Úloha tedy odkrývá alespoň proces pořízení surovin, přiřazení na pozice a průběh zpracování masa.&lt;br /&gt;
&lt;br /&gt;
=Reference=&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:Prodeje.PNG&amp;diff=18700</id>
		<title>File:Prodeje.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:Prodeje.PNG&amp;diff=18700"/>
		<updated>2019-06-11T15:28:51Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:Bodring.PNG&amp;diff=18697</id>
		<title>File:Bodring.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:Bodring.PNG&amp;diff=18697"/>
		<updated>2019-06-11T15:20:17Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=SS_2018/2019/cs&amp;diff=18694</id>
		<title>SS 2018/2019/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=SS_2018/2019/cs&amp;diff=18694"/>
		<updated>2019-06-11T15:08:10Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: /* Vypracovaná témata LS 2018/2019 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:LS 2018/2019}}&lt;br /&gt;
&lt;br /&gt;
Semestrální práce (simulace) z letního semestru 2018/2019. Sem přidejte odkaz na stránku s Vaší prací.&lt;br /&gt;
Nejprve je třeba nechat schválit [[Assignment SS 2018/2019/cs|zadání práce]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Vypracovaná témata LS 2018/2019=&lt;br /&gt;
* [[Simulace populací včel (Netlogo)]] - Michaela Trnková&lt;br /&gt;
* [[Simulace šíření spalniček (Vensim)]] - Jurij Povoroznyk, povj01&lt;br /&gt;
* [[Optimalizace centrálního skladu (Simprocess)]] - Martin Jirsa&lt;br /&gt;
* [[Simulace automobilových závodů (Netlogo)]] - [[User:Jinv00|Jinv00]] ([[User talk:Jinv00|talk]]) 16:26, 10 June 2019 (CET)&lt;br /&gt;
* [[Příjem, zpracování a vyloučení alkoholu z těla (Vensim)]] - Josef Čekan, cekj01&lt;br /&gt;
* [[Optimalizace počtu výčapov piva na štadióne (Simprocess)]] - Dominik Turak&lt;br /&gt;
* [[Simulace reklamačního oddělení (Simprocess)]] - Pavel Gregor&lt;br /&gt;
* [[Spotřeba surovin ve fastfoodu (Simprocess]] - Josef Kočí&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18037</id>
		<title>Pseudorandom number generators/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18037"/>
		<updated>2019-05-30T06:42:53Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Úvod=&lt;br /&gt;
Programátoři i lidé, využívající v počítačových technologiích náhodná čísla, se často domnívají, že jsou náhodná generovaná čísla opravdu zcela náhodná, anebo nad tím ani příliš nepřemýšlí a prostě se na náhodnost spoléhají. Nicméně v IT světě není nic zcela náhodného. Ať už jsou vstupy do systému jistým způsobem předpověditelné dle statistických údajů (například díky dlouhodobému měření), i u náhodnosti postupuje počítač dle nějakého [https://cs.wikipedia.org/wiki/Algoritmus algoritmu]. Dokonce i člověk, pokud má dát nějaké zcela náhodné číslo, lze jeho číslo pomocí tzv. [https://cs.wikipedia.org/wiki/Benfordův_zákon Benfordova zákona] očekávat v určitém formátu. Bavíme se tedy ještě o světě náhodnosti nebo o propracovaných algoritmech, které se tak pouze tváří a které si v běžném životě ani neuvědomujeme?&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná čísla==&lt;br /&gt;
Vzhledem k tomu, že generovaná čísla skutečně nejsou naprosto náhodná, označují se tato čísla jako [https://cs.wikipedia.org/wiki/Pseudonáhodná_čísla pseudonáhodná]. Pokud bychom se chtěli opravdu více přiblížit náhodě, můžeme sáhnout po přírodních zákonech a nechat si pomoci. Své o tom ví i HotBits (viz [[Pseudorandom_number_generators/cs#Fyzik.C3.A1ln.C3.AD_gener.C3.A1tory_n.C3.A1hodn.C3.BDch_.C4.8D.C3.ADsel|Fyzikální generátory náhodných čísel]]).&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná nebo náhodná čísla?==&lt;br /&gt;
Může vyvstat otázka, zda je lepší sada čistě náhodných čísel nebo [https://cs.wikipedia.org/wiki/Pseudonáhodná_čísla pseudonáhodných čísel]. Náhodná čísla například generovaná člověkem nebo přírodou mohou být nevhodná vzhledem k tomu, že některá čísla se opakují vícekrát a jiné méněkrát. Náhodnost může být ovlivněna tím, že člověk X ve výčtu od 1 do 100 preferuje častěji spíše čísla pod 50 a čísla nad 50 se vyskytují méně. Je zde ovšem porušena 100% náhodnost neboť každé číslo z výběru nemá naprosto stejnou pravděpodobnost výběru jako ostatní čísla. Taktéž výběr nevhodného přírodního jevu může způsobit, že některá čísla se vyskytují méně. V potaz můžeme vzít například [https://cs.wikipedia.org/wiki/Barvy_šumu šum] pozadí. Jenže i šum existuje v různých barvách a tudíž se opět dostávají ke slovu některé hodnoty více než jiné.&lt;br /&gt;
V pseudonáhodných posloupnostech je hlídáno, aby bylo rozdělení náhodné veličiny opravdu pseudonáhodné s výskytem rovnoměrným dle vybrané [https://cs.wikipedia.org/wiki/Pravděpodobnostní_funkce pravděpodobnostní funkce]. Generování poté už není zcela náhodné, ale rozdělení hodnot se tak tváří. Vybráním vhodné pravděpodobnostní funkce můžeme pravděpodobnost čísel ovlivnit, avšak o zbytek se stará už generátor.&lt;br /&gt;
U skutečně náhodných čísel může být také problém v jejich pomalejším získávání, zatímco generátor pseudonáhodných čísel plní pouze funkce algoritmů a může tak dodat kvanta náhodných hodnot během malé chvíle. Tam, kde tedy nezáleží příliš na náhodnosti, kde je potřeba spousta náhodných čísel během chvilky a kde je potřeba občas danou posloupnost hodnot zopakovat, se může více hodit posloupnost pseudonáhodných čísel. V oblastech hazardu či kryptografie, kde je naopak nežádoucí opakování posloupností, je naopak spíše žádán generátor skutečně náhodných čísel generovaných různými fyzikálními jevy.&lt;br /&gt;
Ku příkladu je jasné, že by lidé sázející ve sportce neměli důvěru v losovaná čísla, pokud by byla vylosována [https://cs.wikipedia.org/wiki/Algoritmus algoritmem]. A problém by nevyvstal pouze v nedůvěře. Chytří lidé by si čísla zapisovali tak dlouho, dokud by nenašli řád mezi losovanými čísly a tím by mohli odhalit algoritmus, což si nepřeje ani sázková kancelář. Točení míčků je tedy sice také dáno [https://cs.wikipedia.org/wiki/Algoritmus algoritmem] fyzikálním (tření, gravitace, spin, akce a reakce a další), ovšem počáteční seed je vždy náhodný, moment vytažení také, a tak je výsledek pokaždé jiný.&lt;br /&gt;
&lt;br /&gt;
=Fyzikální generátory náhodných čísel=&lt;br /&gt;
[https://cs.wikipedia.org/wiki/Generátor_náhodných_čísel Fyzikální generátory] jsou založeny na fyzikálních jevech, produkující nějaký [https://cs.wikipedia.org/wiki/Barvy_šumu šum]. Ať už se jedná o atmosférický šum či využití [https://cs.wikipedia.org/wiki/Fotoelektrický_jev fotoelektrického jevu]. V následujících podkapitolách si ukážeme praktické příklady generátorů náhodných čísel TRNG (True Random Number Generator – Pravý generátor náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==HotBits==&lt;br /&gt;
Jednou z firem, získávající data tímto způsobem je švýcarská [http://www.fourmilab.ch/hotbits/ HotBits] jenž generuje posloupnost pseudonáhodných bajtů na základě generátoru, který se řídí [https://cs.wikipedia.org/wiki/Radioaktivita#Zákon_radioaktivní_přeměny radioaktivním rozpadem částic], detekovaných v Geiger-Müllerové trubici propojené s počítačem. V tomto případě byl tedy generátor pseudonáhodných čísel nahrazen přírodním algoritmem. &amp;lt;ref name=&amp;quot;walker&amp;quot;&amp;gt;WALKER, John. &amp;lt;i&amp;gt;HotBits: Genuine Random Numbers&amp;lt;/i&amp;gt; [online]. 1996 [cit. 2019-05-29]. Dostupné z: http://www.fourmilab.ch/hotbits/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RADOM.ORG==&lt;br /&gt;
Další online službou je [https://www.random.org/randomness/ RANDOM.ORG], která získává náhodná čísla díky atmosférickému šumu. Je ale zapotřebí si hlídat nežádoucí šum, jako například ventilátor z počítače, který šum může ovlivnit a zanášet do něj svůj šum. Problém je pochopitelně v tom, že ventilátor produkuje pravidelný šum, který může náhodnost šumu snížit. [https://www.random.org/randomness/ RANDOM.ORG] samozřejmě využívá faktu, že nikdo nezná rozpoložení a pohyb všech [https://cs.wikipedia.org/wiki/Molekula molekul] vzduchu na planetě, proto se ani generovaná čísla nedají odhadnout. Místy navíc může zuřit nevyzpytatelná bouřka, což může šum také ovlivnit.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Silicon Graphics==&lt;br /&gt;
Jedná se o [https://cs.wikipedia.org/wiki/Silicon_Graphics amerického výrobce] počítačového [https://cs.wikipedia.org/wiki/Hardware hardwaru], který přišel s tzv. [https://cs.wikipedia.org/wiki/Lavarand lavarand generátorem]. Jeho principem je snímkování lávové lampy, v níž se volně a náhodně pohybuje materiál. Ten je snímkován jako vzor a z těchto snímků pak generátor vytváří posloupnosti náhodných dat. Protože pohyb materiálu je náhodný, jsou pak i čísla zcela náhodná.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generátor na základě lidského vstupu==&lt;br /&gt;
Existují také generátory, které generují náhodná čísla z pohybu PC myši či z intervalů mezi jednotlivými stisky kláves na klávesnici. Zde ovšem vyvstává problém v tom, že operační systém načítá rychlé stisky kláves do bufferu a odesílá po více znacích najednou. To samozřejmě ovlivňuje náhodnost dat. &amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generování čísel míčky==&lt;br /&gt;
Tento generátor se využívá konkrétně v Sazce. Protože se zde hraje o vysoké peněžní částky, je pochopitelné, že čísla nejsou generována generátorem pseudonáhodných čísel. Přestože můžeme říci, že jsou do procesu výběru zapojeny fyzikální algoritmy (přitažlivá síla na základě hmotnosti míčků, třecí síla, zákon akce a reakce při odrazech a další), je výsledek těchto algoritmů tak složitý, jako louskání některých klíčů či komunikace v oboru kryptografie.&lt;br /&gt;
Generování probíhá tak, že je notářem vybrána jedena z osmi sad míčků. Míčky jsou následně zkontrolovány, zda není některý z nich poškozený, zda jsou všechny čisté a zda nejsou poškozeny štítky s čísly, které musí být 100% čitelné. Dále je provedena kontrola losování, aby bylo jisté, že vše funguje bezchybně a nenastane během losování žádná chyba. Teprve pak je spuštěno losování neboli generování náhodných čísel (u Sazky v rozmezí 1-80 včetně). Je zřejmé že v Sazce generátor určí, komu připadne obrovská suma peněz, proto je celý proces generování možná jedním z nejostřeji nejsledovanějších, ať už notáři, techniky, ale i veřejností.&amp;lt;ref name=&amp;quot;krejci&amp;quot;&amp;gt;KREJČÍ, Ondřej. &amp;lt;i&amp;gt;Průběh losování loterií v Sazce odhalen | Vyhraj.com&amp;lt;/i&amp;gt; [online]. 2016 [cit. 2019-05-29] Dostupné z: https://vyhraj.com/jak-probiha-losovani/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generátory pseudonáhodných čísel v praxi=&lt;br /&gt;
Tyto generátory nachází své uplatnění v místech, kde jistá pravidelnost není na obtíž nebo kde je potřeba se k vygenerované sekvenci dostat vícekrát. Své uplatnění najdou například v přehrávačích hudby, kde je zapnuta funkce náhodného výběru další skladby. Dále pak také v simulacích či modelování.&amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lineární kongruentní generátor==&lt;br /&gt;
[https://cs.wikipedia.org/wiki/Lineární_kongruentní_generátor Lineární kongruentní generátor] je jedním z nejstarších a dle &amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt; také nejrozšířenější z generátorů pseudonáhodných čísel. Každý další prvek je spočítán pomocí funkce &amp;lt;math&amp;gt;x_{n+1}=(l\times x_n+m)\bmod{M}&amp;lt;/math&amp;gt;, přičemž &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; je horní mez velikosti prvků, která má funkci modulo neboli zbytek po dělení číslem &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Pokud je například &amp;lt;math&amp;gt;M=10&amp;lt;/math&amp;gt;, pak nejvyšší náhodné číslo bude 9.&lt;br /&gt;
Pokud kupříkladu zvolíme &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; rovno 27, &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; rovno 5, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; rovno 9 a první prvek (seed) zvolíme 8, pak další čísla dle výše uvedeného vztahu budou 22, 11, 10, 5, 7, 17 atd. U 19. prvku ovšem dostáváme opět 8, 22, 11 a řada se celá opakuje. Nevhodnou volbou parametrů se může stát, že bude opakování častější.&lt;br /&gt;
UNIXová funkce rand() (viz [[Pseudorandom_number_generators/cs#Gener.C3.A1tory_programovac.C3.ADch_jazyk.C5.AF|Generátory programovacích jazyků]]) používá tento generátor také a to s parametry &amp;lt;math&amp;gt;l=1103515245&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m=12345&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;M=2^{32}&amp;lt;/math&amp;gt;. &amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Pro počítače IBM byl zase generátor &amp;lt;math&amp;gt;x_{n+1}=(65539\times x_n) \bmod{2^{31}}&amp;lt;/math&amp;gt;.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fibonacciho generátor==&lt;br /&gt;
Fibonacciho generátor se odvíjí od [https://cs.wikipedia.org/wiki/Fibonacciho_posloupnost Fibonacciho posloupnosti], kde každý další prvek je součtem předchozích dvou. Posloupnost začíná při počátku v 1 jako 1, 2, 3, 5, 8, 13, 21 atd. Pokud přidáme jako u předchozího generátoru opět &amp;lt;math&amp;gt;\bmod{M}&amp;lt;/math&amp;gt;, omezíme získaná čísla zase na celočíselné zbytky po dělení &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; a tím stanovíme horní mez pro získané hodnoty. Podobně založen byl Millerův a Prenticův generátor, který byl definován vzorcem &amp;lt;math&amp;gt;x_{n+1}=(x_{n-2}+x_{n-3})\bmod{3137}&amp;lt;/math&amp;gt;, jenž má periodu po 9843907 prvcích.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mersenne Twister==&lt;br /&gt;
Algoritmus Mersenne Twister (také jako MT19937) je nejen velmi rychlý, ale má i velkou periodu (počet čísel, po které se začne řada opakovat) &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt;. Je dokonce rychlejší než [[Pseudorandom_number_generators/cs#Line.C3.A1rn.C3.AD_kongruentn.C3.AD_gener.C3.A1tor|lineárně kongruentní generátor]], ovšem je mnohem náročnější na paměť. Díky své rychlosti a velké periodicitě se výborně hodí pro různé simulace.&amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
Stojí za zmínku, že tento algoritmus je mimo jiné také využit ke generování náhodných čísel pro funkci &amp;lt;code&amp;gt;RAND&amp;lt;/code&amp;gt; (česky &amp;lt;code&amp;gt;NÁHČÍSLO&amp;lt;/code&amp;gt;), a to konkrétně v Officech 2010 &amp;lt;ref name=&amp;quot;microsoft&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;RAND function - Office Support&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://support.office.com/en-us/article/rand-function-4cbfa695-8869-4788-8d90-021ea9f5be73&amp;lt;/ref&amp;gt;, a pak je také tento generátor využit v Simulačním softwaru NetLogo, kde je také použit ke generování ve funkci &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; &amp;lt;ref name=&amp;quot;nazev&amp;quot;&amp;gt;WILENSKY, Uri. &amp;lt;i&amp;gt;NetLogo Models Library: Random Basic&amp;lt;/i&amp;gt; [online]. 2004 [cit. 2019-05-29] Dostupné z: https://ccl.northwestern.edu/netlogo/models/RandomBasic&amp;lt;/ref&amp;gt;. MT19937 je využit v mnohých softwarech od MS Office až po různé simulační programy a v neposlední řadě také v mnoha programovacích jazycích.&lt;br /&gt;
&lt;br /&gt;
==Complimentary-multiply-with-carry==&lt;br /&gt;
Jedná se o alternativu k algoritmu [[Pseudorandom_number_generators/cs#Mersenne_Twister|Mersenne Twister]], který má ještě větší periodu &amp;lt;math&amp;gt;2^{131086}&amp;lt;/math&amp;gt; a je ještě rychlejší, ale opět paměťově ještě náročnější. &amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MS Excel generátor pseudonáhodných čísel==&lt;br /&gt;
[[File:Excel generator.PNG|thumb|left|Náhled možností generátoru v MS Excel]]&lt;br /&gt;
[[File:RovnomerneRozdeleni1.PNG|thumb|right|První graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni2.PNG|thumb|right|Druhý graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni3.PNG|thumb|right|Třetí graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
MS Excel obsahuje v sobě zabudovaný též generátor pseudonáhodných čísel. Jak bylo zmíněno výše (viz [[Pseudorandom_number_generators/cs#Mersenne_Twister|Mersenne Twister]]), pracuje na principu MT19937, což znamená, že jeho periodicita je po &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt; prvcích. Najdeme jej pod kartou ''Data'' a následně ''Analýza dat''. Jedná se o doplněk, který musí být dodatečně dodán. Po kliknutí vybereme ''Generátor pseudonáhodných čísel''. Následné okno je přizpůsobeno podle volby Typu rozložení. Co je ale společné, je počet proměnných (udává počet generovaných sloupců) a počet náhodných čísel (počet generovaných řádků). Pokud se pokusíme o rovnoměrné rozdělení, můžeme se podívat, jak tyto generátory fungují. Pro názornost byly vybrány 3 sloupce po 1000 čísel od 1 do 1000. Obrázky na pravé straně zachycují histogram z určitých intervalů. Můžeme vidět, že se algoritmus opravdu snaží o rovnoměrné rozmístění náhodných čísel. Jen tak pro zajímavost, směrodatné odchylky jsou pro první graf 28.72, pro druhý 28.08 a pro třetí 28.94. Vidíme tedy že [https://cs.wikipedia.org/wiki/Algoritmus algoritmus] se opravdu držel nízké odchylky, přičemž ve druhé posloupnosti se mu to dařilo nejlépe a v poslední nejhůře. U třetího totiž upřednostňoval více čísla z inervalu 1-11.&lt;br /&gt;
Pokud vyzkoušíme generátor například [https://cs.wikipedia.org/wiki/Normální_rozdělení Normálního rozdělení], algoritmus opět hlídá rovnoměrnost dle nastavených parametrů. Opět ale každá řada vychází jinak.&lt;br /&gt;
Narážíme zde na zmíněnou výhodu a nevýhodu zároveň, a sice opakovatelnost pseudonáhodných posloupností. Ať se mohou vygenerovaná čísla jevit jakkoliv náhodná, byla vypočítána algoritmem. Klíčové políčko je v nastavení generátoru Základ generátoru (neboli seed). Pokud vygenerujeme posloupnost např. 1000 čísel od 1 do 100 a zadáme základ například 3, při každém dalším pokusu se stejnými parametry a hlavně základem dostáváme opět tutéž samou posloupnost čísel. To je v různých oborech žádoucí a v jiných nikoliv.&lt;br /&gt;
&lt;br /&gt;
==Kryptografie==&lt;br /&gt;
Náhodná čísla se uplatňují také v oboru [https://cs.wikipedia.org/wiki/Kryptografie kryptografie], ať už se jedná o [https://cs.wikipedia.org/wiki/Elektronický_podpis elektronické podpisy] nebo [https://cs.wikipedia.org/wiki/Šifrování_dat šifrování dat]. Ku příkladu můžeme uvést RSA generátor, který je používán pro generování bezpečné RSA šifry. Pro [https://cs.wikipedia.org/wiki/RSA RSA šifru] je potřeba vygenerovat dle předepsaného algoritmu klíč veřejný a privátní. Zjištění privátního klíče není nemožné, ovšem zabere tolik času, že jsou data již neaktuální.&amp;lt;ref name=&amp;quot;serf&amp;quot;&amp;gt;ŠERF, Robert. &amp;lt;i&amp;gt;Generátory pseudonáhodných čísel a jejich implementace v (kryptografických) knihovnách a kryptografických protokolech&amp;lt;/i&amp;gt; [online]. 2006 [cit. 2019-05-29] Dostupné z: https://is.muni.cz/th/bg71g/bc.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
Posuneme-li se dále, bude nás zajímat, co vše musí generátor pseudonáhodných čísel v kryptografii splňovat. Je zřejmé, že kryptografie je citlivý obor, kde budou kladeny vyšší nároky na generátor pseudonáhodných čísel.&lt;br /&gt;
* Čísla musí být pseudonáhodná, což znamená, že nelze v relativně blízké době s pravděpodobností větší než 50 % zjistit další číslo.&lt;br /&gt;
* I za předpokladu, že uniknou data o stavu generátoru nesmí být snadné opět zjistit již vygenerovanou sekvenci. Této podmínce říkáme dopředná bezpečnost.&lt;br /&gt;
* Pokud se útočník dostane k datům generátoru a zná tak jeho současný stav, i přesto by neměl být schopen generovat stejná čísla jako generátor. Této podmínce se říká zpětná bezpečnost a můžeme jí docílit například pravidelným přidáváním entropie do současného stavu.&lt;br /&gt;
&lt;br /&gt;
==Generátory programovacích jazyků==&lt;br /&gt;
===C===&lt;br /&gt;
Pro linuxový [https://cs.wikipedia.org/wiki/C_(programovací_jazyk) jazyk C] je pro práci s pseudonáhodnými čísly použita funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;srand()&amp;lt;/code&amp;gt; ze standardní funkce &amp;lt;code&amp;gt;&amp;lt;stdlib.h&amp;gt;&amp;lt;/code&amp;gt;. Funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; vrací náhodné číslo od 0 do &amp;lt;code&amp;gt;RAND_MAX&amp;lt;/code&amp;gt;, funkce &amp;lt;code&amp;gt;srand&amp;lt;/code&amp;gt; čísla nevrací, ale poskytuje možnost zadání seed neboli počátku (pro případ, že budeme chtít posloupnost zopakovat) pro funkci &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt;. Bohužel se tyto funkce ukázaly jako špatná volba pro dostatečnou náhodnost generovaných čísel. Proto nejsou vhodné k použití, kde je potřeba dobrá náhoda čísel, jako například v kryptografii. &amp;lt;ref name=&amp;quot;linux&amp;quot;&amp;gt;linux.die.net &amp;lt;i&amp;gt;rand(3): pseudo-random number generator - Linux man page&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://linux.die.net/man/3/rand&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===C#===&lt;br /&gt;
Ve světě [https://cs.wikipedia.org/wiki/C_Sharp C#] existuje třída pro práci s pseudonáhodnými čísly &amp;lt;code&amp;gt;System.Random&amp;lt;/code&amp;gt;. Tato třída se inicializuje formou semínka seed (pokud není zadáno, použije se aktuální datum a čas). Dále pak obsahuje funkce &amp;lt;code&amp;gt;Next()&amp;lt;/code&amp;gt;, která vrátí další pseudonáhodné číslo, &amp;lt;code&amp;gt;Next(Int32)&amp;lt;/code&amp;gt;, vracející pseudonáhodná čísla menší než zadaný parametr a nakonec &amp;lt;code&amp;gt;Next(Int32,Int32)&amp;lt;/code&amp;gt; vracející čísla větší než první argument a menší než druhý argument. Generátor v jazyce C# se zdá být mnohem lepší než pro [https://cs.wikipedia.org/wiki/C_(programovací_jazyk) jazyk C]. Pracuje pomocí algoritmu, který založil [https://cs.wikipedia.org/wiki/Donald_Ervin_Knuth Donald E. Knuth]&amp;lt;ref name=&amp;quot;knuth&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;Random Class (System) | Microsoft Docs&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://docs.microsoft.com/cs-cz/dotnet/api/system.random?view=netframework-4.8&amp;lt;/ref&amp;gt;. Problém nastává ve chvíli, kdy ve stejném cyklu pokaždé inicializujeme &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; a následně vygenerujeme další číslo. Protože cykly probíhají standardně velmi rychle, je semínko většinu cyklů stejné, a tak se může stát, že dostaneme více stejných čísel. Tomu se pochopitelně můžeme vyhnout tím, že &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; inicializujeme pouze jednou. Další problém nastává, pokud používáme více vláken &amp;lt;code&amp;gt;Thread&amp;lt;/code&amp;gt;. Zde se doporučuje, aby si každé vlákno inicializovalo svou instanci &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt;. &amp;lt;ref name=&amp;quot;skeet&amp;quot;&amp;gt;SKEET, Jon. &amp;lt;i&amp;gt;Random numbers&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://csharpindepth.com/articles/Random&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
Pro [https://cs.wikipedia.org/wiki/Java_(programovací_jazyk) jazyk Java] lze využít hned dvě různé funkce &amp;lt;code&amp;gt;Random()&amp;lt;/code&amp;gt;, každá z jiné knihovny. První je z knihovny &amp;lt;code&amp;gt;java.lang.Math&amp;lt;/code&amp;gt; a druhá z &amp;lt;code&amp;gt;java.util.Random&amp;lt;/code&amp;gt;.&lt;br /&gt;
Při použití &amp;lt;code&amp;gt;Math.random()&amp;lt;/code&amp;gt; dostáváme hodnoty v rozsahu 0 až 1. Můžeme tedy dostat číslo například 0.42589632565639872. Pochopitelně zapojením této funkce s dalším upravujícím kódem lze funkci přizpůsobit, aby vracela čísla v jiném rozsahu.&lt;br /&gt;
Třída &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; jakožto druhá varianta pak umí vracet více typů jako &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; či &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt;. Tato třída generuje náhodná čísla pomocí lineárního kongruentního generátoru (viz kapitola [[Pseudorandom_number_generators/cs#Line.C3.A1rn.C3.AD_kongruentn.C3.AD_gener.C3.A1tor|Lineární kongruentní generátor]]). Generování je tedy velmi rychlé, ale nelze využít na jiné bezpečnostní či identifikační účely.&amp;lt;ref name=&amp;quot;thompson&amp;quot;&amp;gt;THOMPSON, John. &amp;lt;i&amp;gt;Random Number Generation in Java - DZone Java&amp;lt;/i&amp;gt; [online]. 2017 [cit. 2019-05-29] Dostupné z: https://dzone.com/articles/random-number-generation-in-java&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Závěr=&lt;br /&gt;
Generátory pseudonáhodných čísel jsou nepostradatelnou součástí programovacích jazyků, simulačních prostředí a dalších softwarů. Oproti generátorům skutečně náhodných čísel mají své výhody jako rychlost a opakovatelnost v místech, kde si to přejeme, ale na druhou stranu trpí nedostatkem náhodnosti, protože posloupnost získávaných čísel se může v jistém bodě znovu opakovat. Proto se nehodí pro bezpečnost či hazard. Vždy bychom si proto měli být vědomi, který typ generátoru používáme, jak rychle potřebujeme čísla dostávat a jak moc nám záleží na nevyzpytatelnosti generovaných čísel.&lt;br /&gt;
&lt;br /&gt;
=Citace=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18036</id>
		<title>Pseudorandom number generators/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18036"/>
		<updated>2019-05-30T06:41:32Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Úvod=&lt;br /&gt;
Programátoři i lidé, využívající v počítačových technologiích náhodná čísla, se často domnívají, že jsou náhodná generovaná čísla opravdu zcela náhodná, anebo nad tím ani příliš nepřemýšlí a prostě se na náhodnost spoléhají. Nicméně v IT světě není nic zcela náhodného. Ať už jsou vstupy do systému jistým způsobem předpověditelné dle statistických údajů (například díky dlouhodobému měření), i u náhodnosti postupuje počítač dle nějakého [https://cs.wikipedia.org/wiki/Algoritmus algoritmu]. Dokonce i člověk, pokud má dát nějaké zcela náhodné číslo, lze jeho číslo pomocí tzv. [https://cs.wikipedia.org/wiki/Benfordův_zákon Benfordova zákona] očekávat v určitém formátu. Bavíme se tedy ještě o světě náhodnosti nebo o propracovaných algoritmech, které se tak pouze tváří a které si v běžném životě ani neuvědomujeme?&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná čísla==&lt;br /&gt;
Vzhledem k tomu, že generovaná čísla skutečně nejsou naprosto náhodná, označují se tato čísla jako [https://cs.wikipedia.org/wiki/Pseudonáhodná_čísla pseudonáhodná]. Pokud bychom se chtěli opravdu více přiblížit náhodě, můžeme sáhnout po přírodních zákonech a nechat si pomoci. Své o tom ví i HotBits (viz [[Pseudorandom_number_generators/cs#Fyzik.C3.A1ln.C3.AD_gener.C3.A1tory_n.C3.A1hodn.C3.BDch_.C4.8D.C3.ADsel|Fyzikální generátory náhodných čísel]]).&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná nebo náhodná čísla?==&lt;br /&gt;
Může vyvstat otázka, zda je lepší sada čistě náhodných čísel nebo [https://cs.wikipedia.org/wiki/Pseudonáhodná_čísla pseudonáhodných čísel]. Náhodná čísla například generovaná člověkem nebo přírodou mohou být nevhodná vzhledem k tomu, že některá čísla se opakují vícekrát a jiné méněkrát. Náhodnost může být ovlivněna tím, že člověk X ve výčtu od 1 do 100 preferuje častěji spíše čísla pod 50 a čísla nad 50 se vyskytují méně. Je zde ovšem porušena 100% náhodnost neboť každé číslo z výběru nemá naprosto stejnou pravděpodobnost výběru jako ostatní čísla. Taktéž výběr nevhodného přírodního jevu může způsobit, že některá čísla se vyskytují méně. V potaz můžeme vzít například [https://cs.wikipedia.org/wiki/Barvy_šumu šum] pozadí. Jenže i šum existuje v různých barvách a tudíž se opět dostávají ke slovu některé hodnoty více než jiné.&lt;br /&gt;
V pseudonáhodných posloupnostech je hlídáno, aby bylo rozdělení náhodné veličiny opravdu pseudonáhodné s výskytem rovnoměrným dle vybrané [https://cs.wikipedia.org/wiki/Pravděpodobnostní_funkce pravděpodobnostní funkce]. Generování poté už není zcela náhodné, ale rozdělení hodnot se tak tváří. Vybráním vhodné pravděpodobnostní funkce můžeme pravděpodobnost čísel ovlivnit, avšak o zbytek se stará už generátor.&lt;br /&gt;
U skutečně náhodných čísel může být také problém v jejich pomalejším získávání, zatímco generátor pseudonáhodných čísel plní pouze funkce algoritmů a může tak dodat kvanta náhodných hodnot během malé chvíle. Tam, kde tedy nezáleží příliš na náhodnosti, kde je potřeba spousta náhodných čísel během chvilky a kde je potřeba občas danou posloupnost hodnot zopakovat, se může více hodit posloupnost pseudonáhodných čísel. V oblastech hazardu či kryptografie, kde je naopak nežádoucí opakování posloupností, je naopak spíše žádán generátor skutečně náhodných čísel generovaných různými fyzikálními jevy.&lt;br /&gt;
Ku příkladu je jasné, že by lidé sázející ve sportce neměli důvěru v losovaná čísla, pokud by byla vylosována [https://cs.wikipedia.org/wiki/Algoritmus algoritmem]. A problém by nevyvstal pouze v nedůvěře. Chytří lidé by si čísla zapisovali tak dlouho, dokud by nenašli řád mezi losovanými čísly a tím by mohli odhalit algoritmus, což si nepřeje ani sázková kancelář. Točení míčků je tedy sice také dáno [https://cs.wikipedia.org/wiki/Algoritmus algoritmem] fyzikálním (tření, gravitace, spin, akce a reakce a další), ovšem počáteční seed je vždy náhodný, moment vytažení také, a tak je výsledek pokaždé jiný.&lt;br /&gt;
&lt;br /&gt;
=Fyzikální generátory náhodných čísel=&lt;br /&gt;
[https://cs.wikipedia.org/wiki/Generátor_náhodných_čísel Fyzikální generátory] jsou založeny na fyzikálních jevech, produkující nějaký [https://cs.wikipedia.org/wiki/Barvy_šumu šum]. Ať už se jedná o atmosférický šum či využití [https://cs.wikipedia.org/wiki/Fotoelektrický_jev fotoelektrického jevu]. V následujících podkapitolách si ukážeme praktické příklady generátorů náhodných čísel TRNG (True Random Number Generator – Pravý generátor náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==HotBits==&lt;br /&gt;
Jednou z firem, získávající data tímto způsobem je švýcarská [http://www.fourmilab.ch/hotbits/ HotBits] jenž generuje posloupnost pseudonáhodných bajtů na základě generátoru, který se řídí [https://cs.wikipedia.org/wiki/Radioaktivita#Zákon_radioaktivní_přeměny radioaktivním rozpadem částic], detekovaných v Geiger-Müllerové trubici propojené s počítačem. V tomto případě byl tedy generátor pseudonáhodných čísel nahrazen přírodním algoritmem. &amp;lt;ref name=&amp;quot;walker&amp;quot;&amp;gt;WALKER, John. &amp;lt;i&amp;gt;HotBits: Genuine Random Numbers&amp;lt;/i&amp;gt; [online]. 1996 [cit. 2019-05-29]. Dostupné z: http://www.fourmilab.ch/hotbits/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RADOM.ORG==&lt;br /&gt;
Další online službou je [https://www.random.org/randomness/ RANDOM.ORG], která získává náhodná čísla díky atmosférickému šumu. Je ale zapotřebí si hlídat nežádoucí šum, jako například ventilátor z počítače, který šum může ovlivnit a zanášet do něj svůj šum. Problém je pochopitelně v tom, že ventilátor produkuje pravidelný šum, který může náhodnost šumu snížit. [https://www.random.org/randomness/ RANDOM.ORG] samozřejmě využívá faktu, že nikdo nezná rozpoložení a pohyb všech [https://cs.wikipedia.org/wiki/Molekula molekul] vzduchu na planetě, proto se ani generovaná čísla nedají odhadnout. Místy navíc může zuřit nevyzpytatelná bouřka, což může šum také ovlivnit.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Silicon Graphics==&lt;br /&gt;
Jedná se o [https://cs.wikipedia.org/wiki/Silicon_Graphics amerického výrobce] počítačového [https://cs.wikipedia.org/wiki/Hardware hardwaru], který přišel s tzv. [https://cs.wikipedia.org/wiki/Lavarand lavarand generátorem]. Jeho principem je snímkování lávové lampy, v níž se volně a náhodně pohybuje materiál. Ten je snímkován jako vzor a z těchto snímků pak generátor vytváří posloupnosti náhodných dat. Protože pohyb materiálu je náhodný, jsou pak i čísla zcela náhodná.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generátor na základě lidského vstupu==&lt;br /&gt;
Existují také generátory, které generují náhodná čísla z pohybu PC myši či z intervalů mezi jednotlivými stisky kláves na klávesnici. Zde ovšem vyvstává problém v tom, že operační systém načítá rychlé stisky kláves do bufferu a odesílá po více znacích najednou. To samozřejmě ovlivňuje náhodnost dat. &amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generování čísel míčky==&lt;br /&gt;
Tento generátor se využívá konkrétně v Sazce. Protože se zde hraje o vysoké peněžní částky, je pochopitelné, že čísla nejsou generována generátorem pseudonáhodných čísel. Přestože můžeme říci, že jsou do procesu výběru zapojeny fyzikální algoritmy (přitažlivá síla na základě hmotnosti míčků, třecí síla, zákon akce a reakce při odrazech a další), je výsledek těchto algoritmů tak složitý, jako louskání některých klíčů či komunikace v oboru kryptografie.&lt;br /&gt;
Generování probíhá tak, že je notářem vybrána jedena z osmi sad míčků. Míčky jsou následně zkontrolovány, zda není některý z nich poškozený, zda jsou všechny čisté a zda nejsou poškozeny štítky s čísly, které musí být 100% čitelné. Dále je provedena kontrola losování, aby bylo jisté, že vše funguje bezchybně a nenastane během losování žádná chyba. Teprve pak je spuštěno losování neboli generování náhodných čísel (u Sazky v rozmezí 1-80 včetně). Je zřejmé že v Sazce generátor určí, komu připadne obrovská suma peněz, proto je celý proces generování možná jedním z nejostřeji nejsledovanějších, ať už notáři, techniky, ale i veřejností.&amp;lt;ref name=&amp;quot;krejci&amp;quot;&amp;gt;KREJČÍ, Ondřej. &amp;lt;i&amp;gt;Průběh losování loterií v Sazce odhalen | Vyhraj.com&amp;lt;/i&amp;gt; [online]. 2016 [cit. 2019-05-29] Dostupné z: https://vyhraj.com/jak-probiha-losovani/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generátory pseudonáhodných čísel v praxi=&lt;br /&gt;
Tyto generátory nachází své uplatnění v místech, kde jistá pravidelnost není na obtíž nebo kde je potřeba se k vygenerované sekvenci dostat vícekrát. Své uplatnění najdou například v přehrávačích hudby, kde je zapnuta funkce náhodného výběru další skladby. Dále pak také v simulacích či modelování.&amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lineární kongruentní generátor==&lt;br /&gt;
[https://cs.wikipedia.org/wiki/Lineární_kongruentní_generátor Lineární kongruentní generátor] je jedním z nejstarších a dle &amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt; také nejrozšířenější z generátorů pseudonáhodných čísel. Každý další prvek je spočítán pomocí funkce &amp;lt;math&amp;gt;x_{n+1}=(l\times x_n+m)\bmod{M}&amp;lt;/math&amp;gt;, přičemž &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; je horní mez velikosti prvků, která má funkci modulo neboli zbytek po dělení číslem &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Pokud je například &amp;lt;math&amp;gt;M=10&amp;lt;/math&amp;gt;, pak nejvyšší náhodné číslo bude 9.&lt;br /&gt;
Pokud kupříkladu zvolíme &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; rovno 27, &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; rovno 5, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; rovno 9 a první prvek (seed) zvolíme 8, pak další čísla dle výše uvedeného vztahu budou 22, 11, 10, 5, 7, 17 atd. U 19. prvku ovšem dostáváme opět 8, 22, 11 a řada se celá opakuje. Nevhodnou volbou parametrů se může stát, že bude opakování častější.&lt;br /&gt;
UNIXová funkce rand() (viz [[Pseudorandom_number_generators/cs#Gener.C3.A1tory_programovac.C3.ADch_jazyk.C5.AF|Generátory programovacích jazyků]]) používá tento generátor také a to s parametry &amp;lt;math&amp;gt;l=1103515245&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m=12345&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;M=2^{32}&amp;lt;/math&amp;gt;. &amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Pro počítače IBM byl zase generátor &amp;lt;math&amp;gt;x_{n+1}=(65539\times x_n) \bmod{2^{31}}&amp;lt;/math&amp;gt;.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fibonacciho generátor==&lt;br /&gt;
Fibonacciho generátor se odvíjí od [https://cs.wikipedia.org/wiki/Fibonacciho_posloupnost Fibonacciho posloupnosti], kde každý další prvek je součtem předchozích dvou. Posloupnost začíná při počátku v 1 jako 1, 2, 3, 5, 8, 13, 21 atd. Pokud přidáme jako u předchozího generátoru opět &amp;lt;math&amp;gt;\bmod{M}&amp;lt;/math&amp;gt;, omezíme získaná čísla zase na celočíselné zbytky po dělení &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; a tím stanovíme horní mez pro získané hodnoty. Podobně založen byl Millerův a Prenticův generátor, který byl definován vzorcem &amp;lt;math&amp;gt;x_{n+1}=(x_{n-2}+x_{n-3})\bmod{3137}&amp;lt;/math&amp;gt;, jenž má periodu po 9843907 prvcích.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mersenne Twister==&lt;br /&gt;
Algoritmus Mersenne Twister (také jako MT19937) je nejen velmi rychlý, ale má i velkou periodu (počet čísel, po které se začne řada opakovat) &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt;. Je dokonce rychlejší než [[Pseudorandom_number_generators/cs#Line.C3.A1rn.C3.AD_kongruentn.C3.AD_gener.C3.A1tor|lineárně kongruentní generátor]], ovšem je mnohem náročnější na paměť. Díky své rychlosti a velké periodicitě se výborně hodí pro různé simulace.&amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
Stojí za zmínku, že tento algoritmus je mimo jiné také využit ke generování náhodných čísel pro funkci &amp;lt;code&amp;gt;RAND&amp;lt;/code&amp;gt; (česky &amp;lt;code&amp;gt;NÁHČÍSLO&amp;lt;/code&amp;gt;), a to konkrétně v Officech 2010 &amp;lt;ref name=&amp;quot;microsoft&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;RAND function - Office Support&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://support.office.com/en-us/article/rand-function-4cbfa695-8869-4788-8d90-021ea9f5be73&amp;lt;/ref&amp;gt;, a pak je také tento generátor využit v Simulačním softwaru NetLogo, kde je také použit ke generování ve funkci &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; &amp;lt;ref name=&amp;quot;nazev&amp;quot;&amp;gt;WILENSKY, Uri. &amp;lt;i&amp;gt;NetLogo Models Library: Random Basic&amp;lt;/i&amp;gt; [online]. 2004 [cit. 2019-05-29] Dostupné z: https://ccl.northwestern.edu/netlogo/models/RandomBasic&amp;lt;/ref&amp;gt;. MT19937 je využit v mnohých softwarech od MS Office až po různé simulační programy a v neposlední řadě také v mnoha programovacích jazycích.&lt;br /&gt;
&lt;br /&gt;
==Complimentary-multiply-with-carry==&lt;br /&gt;
Jedná se o alternativu k algoritmu [[Pseudorandom_number_generators/cs#Mersenne_Twister|Mersenne Twister]], který má ještě větší periodu &amp;lt;math&amp;gt;2^{131086}&amp;lt;/math&amp;gt; a je ještě rychlejší, ale opět paměťově ještě náročnější. &amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MS Excel generátor pseudonáhodných čísel==&lt;br /&gt;
[[File:Excel generator.PNG|thumb|left|Náhled možností generátoru v MS Excel]]&lt;br /&gt;
[[File:RovnomerneRozdeleni.PNG|thumb|right|První graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni.PNG|thumb|right|Druhý graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni.PNG|thumb|right|Třetí graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
MS Excel obsahuje v sobě zabudovaný též generátor pseudonáhodných čísel. Jak bylo zmíněno výše (viz [[Pseudorandom_number_generators/cs#Mersenne_Twister|Mersenne Twister]]), pracuje na principu MT19937, což znamená, že jeho periodicita je po &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt; prvcích. Najdeme jej pod kartou ''Data'' a následně ''Analýza dat''. Jedná se o doplněk, který musí být dodatečně dodán. Po kliknutí vybereme ''Generátor pseudonáhodných čísel''. Následné okno je přizpůsobeno podle volby Typu rozložení. Co je ale společné, je počet proměnných (udává počet generovaných sloupců) a počet náhodných čísel (počet generovaných řádků). Pokud se pokusíme o rovnoměrné rozdělení, můžeme se podívat, jak tyto generátory fungují. Pro názornost byly vybrány 3 sloupce po 1000 čísel od 1 do 1000. Obrázky na pravé straně zachycují histogram z určitých intervalů. Můžeme vidět, že se algoritmus opravdu snaží o rovnoměrné rozmístění náhodných čísel. Jen tak pro zajímavost, směrodatné odchylky jsou pro první graf 28.72, pro druhý 28.08 a pro třetí 28.94. Vidíme tedy že [https://cs.wikipedia.org/wiki/Algoritmus algoritmus] se opravdu držel nízké odchylky, přičemž ve druhé posloupnosti se mu to dařilo nejlépe a v poslední nejhůře. U třetího totiž upřednostňoval více čísla z inervalu 1-11.&lt;br /&gt;
Pokud vyzkoušíme generátor například [https://cs.wikipedia.org/wiki/Normální_rozdělení Normálního rozdělení], algoritmus opět hlídá rovnoměrnost dle nastavených parametrů. Opět ale každá řada vychází jinak.&lt;br /&gt;
Narážíme zde na zmíněnou výhodu a nevýhodu zároveň, a sice opakovatelnost pseudonáhodných posloupností. Ať se mohou vygenerovaná čísla jevit jakkoliv náhodná, byla vypočítána algoritmem. Klíčové políčko je v nastavení generátoru Základ generátoru (neboli seed). Pokud vygenerujeme posloupnost např. 1000 čísel od 1 do 100 a zadáme základ například 3, při každém dalším pokusu se stejnými parametry a hlavně základem dostáváme opět tutéž samou posloupnost čísel. To je v různých oborech žádoucí a v jiných nikoliv.&lt;br /&gt;
&lt;br /&gt;
==Kryptografie==&lt;br /&gt;
Náhodná čísla se uplatňují také v oboru [https://cs.wikipedia.org/wiki/Kryptografie kryptografie], ať už se jedná o [https://cs.wikipedia.org/wiki/Elektronický_podpis elektronické podpisy] nebo [https://cs.wikipedia.org/wiki/Šifrování_dat šifrování dat]. Ku příkladu můžeme uvést RSA generátor, který je používán pro generování bezpečné RSA šifry. Pro [https://cs.wikipedia.org/wiki/RSA RSA šifru] je potřeba vygenerovat dle předepsaného algoritmu klíč veřejný a privátní. Zjištění privátního klíče není nemožné, ovšem zabere tolik času, že jsou data již neaktuální.&amp;lt;ref name=&amp;quot;serf&amp;quot;&amp;gt;ŠERF, Robert. &amp;lt;i&amp;gt;Generátory pseudonáhodných čísel a jejich implementace v (kryptografických) knihovnách a kryptografických protokolech&amp;lt;/i&amp;gt; [online]. 2006 [cit. 2019-05-29] Dostupné z: https://is.muni.cz/th/bg71g/bc.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
Posuneme-li se dále, bude nás zajímat, co vše musí generátor pseudonáhodných čísel v kryptografii splňovat. Je zřejmé, že kryptografie je citlivý obor, kde budou kladeny vyšší nároky na generátor pseudonáhodných čísel.&lt;br /&gt;
* Čísla musí být pseudonáhodná, což znamená, že nelze v relativně blízké době s pravděpodobností větší než 50 % zjistit další číslo.&lt;br /&gt;
* I za předpokladu, že uniknou data o stavu generátoru nesmí být snadné opět zjistit již vygenerovanou sekvenci. Této podmínce říkáme dopředná bezpečnost.&lt;br /&gt;
* Pokud se útočník dostane k datům generátoru a zná tak jeho současný stav, i přesto by neměl být schopen generovat stejná čísla jako generátor. Této podmínce se říká zpětná bezpečnost a můžeme jí docílit například pravidelným přidáváním entropie do současného stavu.&lt;br /&gt;
&lt;br /&gt;
==Generátory programovacích jazyků==&lt;br /&gt;
===C===&lt;br /&gt;
Pro linuxový [https://cs.wikipedia.org/wiki/C_(programovací_jazyk) jazyk C] je pro práci s pseudonáhodnými čísly použita funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;srand()&amp;lt;/code&amp;gt; ze standardní funkce &amp;lt;code&amp;gt;&amp;lt;stdlib.h&amp;gt;&amp;lt;/code&amp;gt;. Funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; vrací náhodné číslo od 0 do &amp;lt;code&amp;gt;RAND_MAX&amp;lt;/code&amp;gt;, funkce &amp;lt;code&amp;gt;srand&amp;lt;/code&amp;gt; čísla nevrací, ale poskytuje možnost zadání seed neboli počátku (pro případ, že budeme chtít posloupnost zopakovat) pro funkci &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt;. Bohužel se tyto funkce ukázaly jako špatná volba pro dostatečnou náhodnost generovaných čísel. Proto nejsou vhodné k použití, kde je potřeba dobrá náhoda čísel, jako například v kryptografii. &amp;lt;ref name=&amp;quot;linux&amp;quot;&amp;gt;linux.die.net &amp;lt;i&amp;gt;rand(3): pseudo-random number generator - Linux man page&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://linux.die.net/man/3/rand&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===C#===&lt;br /&gt;
Ve světě [https://cs.wikipedia.org/wiki/C_Sharp C#] existuje třída pro práci s pseudonáhodnými čísly &amp;lt;code&amp;gt;System.Random&amp;lt;/code&amp;gt;. Tato třída se inicializuje formou semínka seed (pokud není zadáno, použije se aktuální datum a čas). Dále pak obsahuje funkce &amp;lt;code&amp;gt;Next()&amp;lt;/code&amp;gt;, která vrátí další pseudonáhodné číslo, &amp;lt;code&amp;gt;Next(Int32)&amp;lt;/code&amp;gt;, vracející pseudonáhodná čísla menší než zadaný parametr a nakonec &amp;lt;code&amp;gt;Next(Int32,Int32)&amp;lt;/code&amp;gt; vracející čísla větší než první argument a menší než druhý argument. Generátor v jazyce C# se zdá být mnohem lepší než pro [https://cs.wikipedia.org/wiki/C_(programovací_jazyk) jazyk C]. Pracuje pomocí algoritmu, který založil [https://cs.wikipedia.org/wiki/Donald_Ervin_Knuth Donald E. Knuth]&amp;lt;ref name=&amp;quot;knuth&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;Random Class (System) | Microsoft Docs&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://docs.microsoft.com/cs-cz/dotnet/api/system.random?view=netframework-4.8&amp;lt;/ref&amp;gt;. Problém nastává ve chvíli, kdy ve stejném cyklu pokaždé inicializujeme &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; a následně vygenerujeme další číslo. Protože cykly probíhají standardně velmi rychle, je semínko většinu cyklů stejné, a tak se může stát, že dostaneme více stejných čísel. Tomu se pochopitelně můžeme vyhnout tím, že &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; inicializujeme pouze jednou. Další problém nastává, pokud používáme více vláken &amp;lt;code&amp;gt;Thread&amp;lt;/code&amp;gt;. Zde se doporučuje, aby si každé vlákno inicializovalo svou instanci &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt;. &amp;lt;ref name=&amp;quot;skeet&amp;quot;&amp;gt;SKEET, Jon. &amp;lt;i&amp;gt;Random numbers&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://csharpindepth.com/articles/Random&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
Pro [https://cs.wikipedia.org/wiki/Java_(programovací_jazyk) jazyk Java] lze využít hned dvě různé funkce &amp;lt;code&amp;gt;Random()&amp;lt;/code&amp;gt;, každá z jiné knihovny. První je z knihovny &amp;lt;code&amp;gt;java.lang.Math&amp;lt;/code&amp;gt; a druhá z &amp;lt;code&amp;gt;java.util.Random&amp;lt;/code&amp;gt;.&lt;br /&gt;
Při použití &amp;lt;code&amp;gt;Math.random()&amp;lt;/code&amp;gt; dostáváme hodnoty v rozsahu 0 až 1. Můžeme tedy dostat číslo například 0.42589632565639872. Pochopitelně zapojením této funkce s dalším upravujícím kódem lze funkci přizpůsobit, aby vracela čísla v jiném rozsahu.&lt;br /&gt;
Třída &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; jakožto druhá varianta pak umí vracet více typů jako &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; či &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt;. Tato třída generuje náhodná čísla pomocí lineárního kongruentního generátoru (viz kapitola [[Pseudorandom_number_generators/cs#Line.C3.A1rn.C3.AD_kongruentn.C3.AD_gener.C3.A1tor|Lineární kongruentní generátor]]). Generování je tedy velmi rychlé, ale nelze využít na jiné bezpečnostní či identifikační účely.&amp;lt;ref name=&amp;quot;thompson&amp;quot;&amp;gt;THOMPSON, John. &amp;lt;i&amp;gt;Random Number Generation in Java - DZone Java&amp;lt;/i&amp;gt; [online]. 2017 [cit. 2019-05-29] Dostupné z: https://dzone.com/articles/random-number-generation-in-java&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Závěr=&lt;br /&gt;
Generátory pseudonáhodných čísel jsou nepostradatelnou součástí programovacích jazyků, simulačních prostředí a dalších softwarů. Oproti generátorům skutečně náhodných čísel mají své výhody jako rychlost a opakovatelnost v místech, kde si to přejeme, ale na druhou stranu trpí nedostatkem náhodnosti, protože posloupnost získávaných čísel se může v jistém bodě znovu opakovat. Proto se nehodí pro bezpečnost či hazard. Vždy bychom si proto měli být vědomi, který typ generátoru používáme, jak rychle potřebujeme čísla dostávat a jak moc nám záleží na nevyzpytatelnosti generovaných čísel.&lt;br /&gt;
&lt;br /&gt;
=Citace=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni3.PNG&amp;diff=18035</id>
		<title>File:RovnomerneRozdeleni3.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni3.PNG&amp;diff=18035"/>
		<updated>2019-05-30T06:39:10Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Xkocj44 načetl novou verzi File:RovnomerneRozdeleni3.PNG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni2.PNG&amp;diff=18034</id>
		<title>File:RovnomerneRozdeleni2.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni2.PNG&amp;diff=18034"/>
		<updated>2019-05-30T06:37:58Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Xkocj44 načetl novou verzi File:RovnomerneRozdeleni2.PNG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni2.PNG&amp;diff=18033</id>
		<title>File:RovnomerneRozdeleni2.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni2.PNG&amp;diff=18033"/>
		<updated>2019-05-30T06:36:27Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Xkocj44 načetl novou verzi File:RovnomerneRozdeleni2.PNG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni2.PNG&amp;diff=18032</id>
		<title>File:RovnomerneRozdeleni2.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni2.PNG&amp;diff=18032"/>
		<updated>2019-05-30T06:35:40Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Xkocj44 načetl novou verzi File:RovnomerneRozdeleni2.PNG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18031</id>
		<title>Pseudorandom number generators/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18031"/>
		<updated>2019-05-29T21:07:29Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Dodání reference k C#&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Úvod=&lt;br /&gt;
Programátoři i lidé, využívající v počítačových technologiích náhodná čísla, se často domnívají, že jsou náhodná generovaná čísla opravdu zcela náhodná, anebo nad tím ani příliš nepřemýšlí a prostě se na náhodnost spoléhají. Nicméně v IT světě není nic zcela náhodného. Ať už jsou vstupy do systému jistým způsobem předpověditelné dle statistických údajů (například díky dlouhodobému měření), i u náhodnosti postupuje počítač dle nějakého [https://cs.wikipedia.org/wiki/Algoritmus algoritmu]. Dokonce i člověk, pokud má dát nějaké zcela náhodné číslo, lze jeho číslo pomocí tzv. [https://cs.wikipedia.org/wiki/Benfordův_zákon Benfordova zákona] očekávat v určitém formátu. Bavíme se tedy ještě o světě náhodnosti nebo o propracovaných algoritmech, které se tak pouze tváří a které si v běžném životě ani neuvědomujeme?&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná čísla==&lt;br /&gt;
Vzhledem k tomu, že generovaná čísla skutečně nejsou naprosto náhodná, označují se tato čísla jako [https://cs.wikipedia.org/wiki/Pseudonáhodná_čísla pseudonáhodná]. Pokud bychom se chtěli opravdu více přiblížit náhodě, můžeme sáhnout po přírodních zákonech a nechat si pomoci. Své o tom ví i HotBits (viz [[Pseudorandom_number_generators/cs#Fyzik.C3.A1ln.C3.AD_gener.C3.A1tory_n.C3.A1hodn.C3.BDch_.C4.8D.C3.ADsel|Fyzikální generátory náhodných čísel]]).&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná nebo náhodná čísla?==&lt;br /&gt;
Může vyvstat otázka, zda je lepší sada čistě náhodných čísel nebo [https://cs.wikipedia.org/wiki/Pseudonáhodná_čísla pseudonáhodných čísel]. Náhodná čísla například generovaná člověkem nebo přírodou mohou být nevhodná vzhledem k tomu, že některá čísla se opakují vícekrát a jiné méněkrát. Náhodnost může být ovlivněna tím, že člověk X ve výčtu od 1 do 100 preferuje častěji spíše čísla pod 50 a čísla nad 50 se vyskytují méně. Je zde ovšem porušena 100% náhodnost neboť každé číslo z výběru nemá naprosto stejnou pravděpodobnost výběru jako ostatní čísla. Taktéž výběr nevhodného přírodního jevu může způsobit, že některá čísla se vyskytují méně. V potaz můžeme vzít například [https://cs.wikipedia.org/wiki/Barvy_šumu šum] pozadí. Jenže i šum existuje v různých barvách a tudíž se opět dostávají ke slovu některé hodnoty více než jiné.&lt;br /&gt;
V pseudonáhodných posloupnostech je hlídáno, aby bylo rozdělení náhodné veličiny opravdu pseudonáhodné s výskytem rovnoměrným dle vybrané [https://cs.wikipedia.org/wiki/Pravděpodobnostní_funkce pravděpodobnostní funkce]. Generování poté už není zcela náhodné, ale rozdělení hodnot se tak tváří. Vybráním vhodné pravděpodobnostní funkce můžeme pravděpodobnost čísel ovlivnit, avšak o zbytek se stará už generátor.&lt;br /&gt;
U skutečně náhodných čísel může být také problém v jejich pomalejším získávání, zatímco generátor pseudonáhodných čísel plní pouze funkce algoritmů a může tak dodat kvanta náhodných hodnot během malé chvíle. Tam, kde tedy nezáleží příliš na náhodnosti, kde je potřeba spousta náhodných čísel během chvilky a kde je potřeba občas danou posloupnost hodnot zopakovat, se může více hodit posloupnost pseudonáhodných čísel. V oblastech hazardu či kryptografie, kde je naopak nežádoucí opakování posloupností, je naopak spíše žádán generátor skutečně náhodných čísel generovaných různými fyzikálními jevy.&lt;br /&gt;
Ku příkladu je jasné, že by lidé sázející ve sportce neměli důvěru v losovaná čísla, pokud by byla vylosována [https://cs.wikipedia.org/wiki/Algoritmus algoritmem]. A problém by nevyvstal pouze v nedůvěře. Chytří lidé by si čísla zapisovali tak dlouho, dokud by nenašli řád mezi losovanými čísly a tím by mohli odhalit algoritmus, což si nepřeje ani sázková kancelář. Točení míčků je tedy sice také dáno [https://cs.wikipedia.org/wiki/Algoritmus algoritmem] fyzikálním (tření, gravitace, spin, akce a reakce a další), ovšem počáteční seed je vždy náhodný, moment vytažení také, a tak je výsledek pokaždé jiný.&lt;br /&gt;
&lt;br /&gt;
=Fyzikální generátory náhodných čísel=&lt;br /&gt;
[https://cs.wikipedia.org/wiki/Generátor_náhodných_čísel Fyzikální generátory] jsou založeny na fyzikálních jevech, produkující nějaký [https://cs.wikipedia.org/wiki/Barvy_šumu šum]. Ať už se jedná o atmosférický šum či využití [https://cs.wikipedia.org/wiki/Fotoelektrický_jev fotoelektrického jevu]. V následujících podkapitolách si ukážeme praktické příklady generátorů náhodných čísel TRNG (True Random Number Generator – Pravý generátor náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==HotBits==&lt;br /&gt;
Jednou z firem, získávající data tímto způsobem je švýcarská [http://www.fourmilab.ch/hotbits/ HotBits] jenž generuje posloupnost pseudonáhodných bajtů na základě generátoru, který se řídí [https://cs.wikipedia.org/wiki/Radioaktivita#Zákon_radioaktivní_přeměny radioaktivním rozpadem částic], detekovaných v Geiger-Müllerové trubici propojené s počítačem. V tomto případě byl tedy generátor pseudonáhodných čísel nahrazen přírodním algoritmem. &amp;lt;ref name=&amp;quot;walker&amp;quot;&amp;gt;WALKER, John. &amp;lt;i&amp;gt;HotBits: Genuine Random Numbers&amp;lt;/i&amp;gt; [online]. 1996 [cit. 2019-05-29]. Dostupné z: http://www.fourmilab.ch/hotbits/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RADOM.ORG==&lt;br /&gt;
Další online službou je [https://www.random.org/randomness/ RANDOM.ORG], která získává náhodná čísla díky atmosférickému šumu. Je ale zapotřebí si hlídat nežádoucí šum, jako například ventilátor z počítače, který šum může ovlivnit a zanášet do něj svůj šum. Problém je pochopitelně v tom, že ventilátor produkuje pravidelný šum, který může náhodnost šumu snížit. [https://www.random.org/randomness/ RANDOM.ORG] samozřejmě využívá faktu, že nikdo nezná rozpoložení a pohyb všech [https://cs.wikipedia.org/wiki/Molekula molekul] vzduchu na planetě, proto se ani generovaná čísla nedají odhadnout. Místy navíc může zuřit nevyzpytatelná bouřka, což může šum také ovlivnit.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Silicon Graphics==&lt;br /&gt;
Jedná se o [https://cs.wikipedia.org/wiki/Silicon_Graphics amerického výrobce] počítačového [https://cs.wikipedia.org/wiki/Hardware hardwaru], který přišel s tzv. [https://cs.wikipedia.org/wiki/Lavarand lavarand generátorem]. Jeho principem je snímkování lávové lampy, v níž se volně a náhodně pohybuje materiál. Ten je snímkován jako vzor a z těchto snímků pak generátor vytváří posloupnosti náhodných dat. Protože pohyb materiálu je náhodný, jsou pak i čísla zcela náhodná.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generátor na základě lidského vstupu==&lt;br /&gt;
Existují také generátory, které generují náhodná čísla z pohybu PC myši či z intervalů mezi jednotlivými stisky kláves na klávesnici. Zde ovšem vyvstává problém v tom, že operační systém načítá rychlé stisky kláves do bufferu a odesílá po více znacích najednou. To samozřejmě ovlivňuje náhodnost dat. &amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generování čísel míčky==&lt;br /&gt;
Tento generátor se využívá konkrétně v Sazce. Protože se zde hraje o vysoké peněžní částky, je pochopitelné, že čísla nejsou generována generátorem pseudonáhodných čísel. Přestože můžeme říci, že jsou do procesu výběru zapojeny fyzikální algoritmy (přitažlivá síla na základě hmotnosti míčků, třecí síla, zákon akce a reakce při odrazech a další), je výsledek těchto algoritmů tak složitý, jako louskání některých klíčů či komunikace v oboru kryptografie.&lt;br /&gt;
Generování probíhá tak, že je notářem vybrána jedena z osmi sad míčků. Míčky jsou následně zkontrolovány, zda není některý z nich poškozený, zda jsou všechny čisté a zda nejsou poškozeny štítky s čísly, které musí být 100% čitelné. Dále je provedena kontrola losování, aby bylo jisté, že vše funguje bezchybně a nenastane během losování žádná chyba. Teprve pak je spuštěno losování neboli generování náhodných čísel (u Sazky v rozmezí 1-80 včetně). Je zřejmé že v Sazce generátor určí, komu připadne obrovská suma peněz, proto je celý proces generování možná jedním z nejostřeji nejsledovanějších, ať už notáři, techniky, ale i veřejností.&amp;lt;ref name=&amp;quot;krejci&amp;quot;&amp;gt;KREJČÍ, Ondřej. &amp;lt;i&amp;gt;Průběh losování loterií v Sazce odhalen | Vyhraj.com&amp;lt;/i&amp;gt; [online]. 2016 [cit. 2019-05-29] Dostupné z: https://vyhraj.com/jak-probiha-losovani/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generátory pseudonáhodných čísel v praxi=&lt;br /&gt;
Tyto generátory nachází své uplatnění v místech, kde jistá pravidelnost není na obtíž nebo kde je potřeba se k vygenerované sekvenci dostat vícekrát. Své uplatnění najdou například v přehrávačích hudby, kde je zapnuta funkce náhodného výběru další skladby. Dále pak také v simulacích či modelování.&amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lineární kongruentní generátor==&lt;br /&gt;
[https://cs.wikipedia.org/wiki/Lineární_kongruentní_generátor Lineární kongruentní generátor] je jedním z nejstarších a dle &amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt; také nejrozšířenější z generátorů pseudonáhodných čísel. Každý další prvek je spočítán pomocí funkce &amp;lt;math&amp;gt;x_{n+1}=(l\times x_n+m)\bmod{M}&amp;lt;/math&amp;gt;, přičemž &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; je horní mez velikosti prvků, která má funkci modulo neboli zbytek po dělení číslem &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Pokud je například &amp;lt;math&amp;gt;M=10&amp;lt;/math&amp;gt;, pak nejvyšší náhodné číslo bude 9.&lt;br /&gt;
Pokud kupříkladu zvolíme &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; rovno 27, &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; rovno 5, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; rovno 9 a první prvek (seed) zvolíme 8, pak další čísla dle výše uvedeného vztahu budou 22, 11, 10, 5, 7, 17 atd. U 19. prvku ovšem dostáváme opět 8, 22, 11 a řada se celá opakuje. Nevhodnou volbou parametrů se může stát, že bude opakování častější.&lt;br /&gt;
UNIXová funkce rand() (viz [[Pseudorandom_number_generators/cs#Gener.C3.A1tory_programovac.C3.ADch_jazyk.C5.AF|Generátory programovacích jazyků]]) používá tento generátor také a to s parametry &amp;lt;math&amp;gt;l=1103515245&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m=12345&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;M=2^{32}&amp;lt;/math&amp;gt;. &amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Pro počítače IBM byl zase generátor &amp;lt;math&amp;gt;x_{n+1}=(65539\times x_n) \bmod{2^{31}}&amp;lt;/math&amp;gt;.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fibonacciho generátor==&lt;br /&gt;
Fibonacciho generátor se odvíjí od [https://cs.wikipedia.org/wiki/Fibonacciho_posloupnost Fibonacciho posloupnosti], kde každý další prvek je součtem předchozích dvou. Posloupnost začíná při počátku v 1 jako 1, 2, 3, 5, 8, 13, 21 atd. Pokud přidáme jako u předchozího generátoru opět &amp;lt;math&amp;gt;\bmod{M}&amp;lt;/math&amp;gt;, omezíme získaná čísla zase na celočíselné zbytky po dělení &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; a tím stanovíme horní mez pro získané hodnoty. Podobně založen byl Millerův a Prenticův generátor, který byl definován vzorcem &amp;lt;math&amp;gt;x_{n+1}=(x_{n-2}+x_{n-3})\bmod{3137}&amp;lt;/math&amp;gt;, jenž má periodu po 9843907 prvcích.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mersenne Twister==&lt;br /&gt;
Algoritmus Mersenne Twister (také jako MT19937) je nejen velmi rychlý, ale má i velkou periodu (počet čísel, po které se začne řada opakovat) &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt;. Je dokonce rychlejší než [[Pseudorandom_number_generators/cs#Line.C3.A1rn.C3.AD_kongruentn.C3.AD_gener.C3.A1tor|lineárně kongruentní generátor]], ovšem je mnohem náročnější na paměť. Díky své rychlosti a velké periodicitě se výborně hodí pro různé simulace.&amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
Stojí za zmínku, že tento algoritmus je mimo jiné také využit ke generování náhodných čísel pro funkci &amp;lt;code&amp;gt;RAND&amp;lt;/code&amp;gt; (česky &amp;lt;code&amp;gt;NÁHČÍSLO&amp;lt;/code&amp;gt;), a to konkrétně v Officech 2010 &amp;lt;ref name=&amp;quot;microsoft&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;RAND function - Office Support&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://support.office.com/en-us/article/rand-function-4cbfa695-8869-4788-8d90-021ea9f5be73&amp;lt;/ref&amp;gt;, a pak je také tento generátor využit v Simulačním softwaru NetLogo, kde je také použit ke generování ve funkci &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; &amp;lt;ref name=&amp;quot;nazev&amp;quot;&amp;gt;WILENSKY, Uri. &amp;lt;i&amp;gt;NetLogo Models Library: Random Basic&amp;lt;/i&amp;gt; [online]. 2004 [cit. 2019-05-29] Dostupné z: https://ccl.northwestern.edu/netlogo/models/RandomBasic&amp;lt;/ref&amp;gt;. MT19937 je využit v mnohých softwarech od MS Office až po různé simulační programy a v neposlední řadě také v mnoha programovacích jazycích.&lt;br /&gt;
&lt;br /&gt;
==Complimentary-multiply-with-carry==&lt;br /&gt;
Jedná se o alternativu k algoritmu [[Pseudorandom_number_generators/cs#Mersenne_Twister|Mersenne Twister]], který má ještě větší periodu &amp;lt;math&amp;gt;2^{131086}&amp;lt;/math&amp;gt; a je ještě rychlejší, ale opět paměťově ještě náročnější. &amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MS Excel generátor pseudonáhodných čísel==&lt;br /&gt;
[[File:Excel generator.PNG|thumb|left|Náhled možností generátoru v MS Excel]]&lt;br /&gt;
[[File:RovnomerneRozdeleni1.PNG|thumb|right|První graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni2.PNG|thumb|right|Druhý graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni3.PNG|thumb|right|Třetí graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
MS Excel obsahuje v sobě zabudovaný též generátor pseudonáhodných čísel. Jak bylo zmíněno výše (viz [[Pseudorandom_number_generators/cs#Mersenne_Twister|Mersenne Twister]]), pracuje na principu MT19937, což znamená, že jeho periodicita je po &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt; prvcích. Najdeme jej pod kartou ''Data'' a následně ''Analýza dat''. Jedná se o doplněk, který musí být dodatečně dodán. Po kliknutí vybereme ''Generátor pseudonáhodných čísel''. Následné okno je přizpůsobeno podle volby Typu rozložení. Co je ale společné, je počet proměnných (udává počet generovaných sloupců) a počet náhodných čísel (počet generovaných řádků). Pokud se pokusíme o rovnoměrné rozdělení, můžeme se podívat, jak tyto generátory fungují. Pro názornost byly vybrány 3 sloupce po 1000 čísel od 1 do 1000. Obrázky na pravé straně zachycují histogram z určitých intervalů. Můžeme vidět, že se algoritmus opravdu snaží o rovnoměrné rozmístění náhodných čísel. Jen tak pro zajímavost, směrodatné odchylky jsou pro první graf 28.72, pro druhý 28.08 a pro třetí 28.94. Vidíme tedy že [https://cs.wikipedia.org/wiki/Algoritmus algoritmus] se opravdu držel nízké odchylky, přičemž ve druhé posloupnosti se mu to dařilo nejlépe a v poslední nejhůře. U třetího totiž upřednostňoval více čísla z inervalu 1-11.&lt;br /&gt;
Pokud vyzkoušíme generátor například [https://cs.wikipedia.org/wiki/Normální_rozdělení Normálního rozdělení], algoritmus opět hlídá rovnoměrnost dle nastavených parametrů. Opět ale každá řada vychází jinak.&lt;br /&gt;
Narážíme zde na zmíněnou výhodu a nevýhodu zároveň, a sice opakovatelnost pseudonáhodných posloupností. Ať se mohou vygenerovaná čísla jevit jakkoliv náhodná, byla vypočítána algoritmem. Klíčové políčko je v nastavení generátoru Základ generátoru (neboli seed). Pokud vygenerujeme posloupnost např. 1000 čísel od 1 do 100 a zadáme základ například 3, při každém dalším pokusu se stejnými parametry a hlavně základem dostáváme opět tutéž samou posloupnost čísel. To je v různých oborech žádoucí a v jiných nikoliv.&lt;br /&gt;
&lt;br /&gt;
==Kryptografie==&lt;br /&gt;
Náhodná čísla se uplatňují také v oboru [https://cs.wikipedia.org/wiki/Kryptografie kryptografie], ať už se jedná o [https://cs.wikipedia.org/wiki/Elektronický_podpis elektronické podpisy] nebo [https://cs.wikipedia.org/wiki/Šifrování_dat šifrování dat]. Ku příkladu můžeme uvést RSA generátor, který je používán pro generování bezpečné RSA šifry. Pro [https://cs.wikipedia.org/wiki/RSA RSA šifru] je potřeba vygenerovat dle předepsaného algoritmu klíč veřejný a privátní. Zjištění privátního klíče není nemožné, ovšem zabere tolik času, že jsou data již neaktuální.&amp;lt;ref name=&amp;quot;serf&amp;quot;&amp;gt;ŠERF, Robert. &amp;lt;i&amp;gt;Generátory pseudonáhodných čísel a jejich implementace v (kryptografických) knihovnách a kryptografických protokolech&amp;lt;/i&amp;gt; [online]. 2006 [cit. 2019-05-29] Dostupné z: https://is.muni.cz/th/bg71g/bc.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
Posuneme-li se dále, bude nás zajímat, co vše musí generátor pseudonáhodných čísel v kryptografii splňovat. Je zřejmé, že kryptografie je citlivý obor, kde budou kladeny vyšší nároky na generátor pseudonáhodných čísel.&lt;br /&gt;
* Čísla musí být pseudonáhodná, což znamená, že nelze v relativně blízké době s pravděpodobností větší než 50 % zjistit další číslo.&lt;br /&gt;
* I za předpokladu, že uniknou data o stavu generátoru nesmí být snadné opět zjistit již vygenerovanou sekvenci. Této podmínce říkáme dopředná bezpečnost.&lt;br /&gt;
* Pokud se útočník dostane k datům generátoru a zná tak jeho současný stav, i přesto by neměl být schopen generovat stejná čísla jako generátor. Této podmínce se říká zpětná bezpečnost a můžeme jí docílit například pravidelným přidáváním entropie do současného stavu.&lt;br /&gt;
&lt;br /&gt;
==Generátory programovacích jazyků==&lt;br /&gt;
===C===&lt;br /&gt;
Pro linuxový [https://cs.wikipedia.org/wiki/C_(programovací_jazyk) jazyk C] je pro práci s pseudonáhodnými čísly použita funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;srand()&amp;lt;/code&amp;gt; ze standardní funkce &amp;lt;code&amp;gt;&amp;lt;stdlib.h&amp;gt;&amp;lt;/code&amp;gt;. Funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; vrací náhodné číslo od 0 do &amp;lt;code&amp;gt;RAND_MAX&amp;lt;/code&amp;gt;, funkce &amp;lt;code&amp;gt;srand&amp;lt;/code&amp;gt; čísla nevrací, ale poskytuje možnost zadání seed neboli počátku (pro případ, že budeme chtít posloupnost zopakovat) pro funkci &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt;. Bohužel se tyto funkce ukázaly jako špatná volba pro dostatečnou náhodnost generovaných čísel. Proto nejsou vhodné k použití, kde je potřeba dobrá náhoda čísel, jako například v kryptografii. &amp;lt;ref name=&amp;quot;linux&amp;quot;&amp;gt;linux.die.net &amp;lt;i&amp;gt;rand(3): pseudo-random number generator - Linux man page&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://linux.die.net/man/3/rand&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===C#===&lt;br /&gt;
Ve světě [https://cs.wikipedia.org/wiki/C_Sharp C#] existuje třída pro práci s pseudonáhodnými čísly &amp;lt;code&amp;gt;System.Random&amp;lt;/code&amp;gt;. Tato třída se inicializuje formou semínka seed (pokud není zadáno, použije se aktuální datum a čas). Dále pak obsahuje funkce &amp;lt;code&amp;gt;Next()&amp;lt;/code&amp;gt;, která vrátí další pseudonáhodné číslo, &amp;lt;code&amp;gt;Next(Int32)&amp;lt;/code&amp;gt;, vracející pseudonáhodná čísla menší než zadaný parametr a nakonec &amp;lt;code&amp;gt;Next(Int32,Int32)&amp;lt;/code&amp;gt; vracející čísla větší než první argument a menší než druhý argument. Generátor v jazyce C# se zdá být mnohem lepší než pro [https://cs.wikipedia.org/wiki/C_(programovací_jazyk) jazyk C]. Pracuje pomocí algoritmu, který založil [https://cs.wikipedia.org/wiki/Donald_Ervin_Knuth Donald E. Knuth]&amp;lt;ref name=&amp;quot;knuth&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;Random Class (System) | Microsoft Docs&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://docs.microsoft.com/cs-cz/dotnet/api/system.random?view=netframework-4.8&amp;lt;/ref&amp;gt;. Problém nastává ve chvíli, kdy ve stejném cyklu pokaždé inicializujeme &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; a následně vygenerujeme další číslo. Protože cykly probíhají standardně velmi rychle, je semínko většinu cyklů stejné, a tak se může stát, že dostaneme více stejných čísel. Tomu se pochopitelně můžeme vyhnout tím, že &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; inicializujeme pouze jednou. Další problém nastává, pokud používáme více vláken &amp;lt;code&amp;gt;Thread&amp;lt;/code&amp;gt;. Zde se doporučuje, aby si každé vlákno inicializovalo svou instanci &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt;. &amp;lt;ref name=&amp;quot;skeet&amp;quot;&amp;gt;SKEET, Jon. &amp;lt;i&amp;gt;Random numbers&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://csharpindepth.com/articles/Random&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
Pro [https://cs.wikipedia.org/wiki/Java_(programovací_jazyk) jazyk Java] lze využít hned dvě různé funkce &amp;lt;code&amp;gt;Random()&amp;lt;/code&amp;gt;, každá z jiné knihovny. První je z knihovny &amp;lt;code&amp;gt;java.lang.Math&amp;lt;/code&amp;gt; a druhá z &amp;lt;code&amp;gt;java.util.Random&amp;lt;/code&amp;gt;.&lt;br /&gt;
Při použití &amp;lt;code&amp;gt;Math.random()&amp;lt;/code&amp;gt; dostáváme hodnoty v rozsahu 0 až 1. Můžeme tedy dostat číslo například 0.42589632565639872. Pochopitelně zapojením této funkce s dalším upravujícím kódem lze funkci přizpůsobit, aby vracela čísla v jiném rozsahu.&lt;br /&gt;
Třída &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; jakožto druhá varianta pak umí vracet více typů jako &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; či &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt;. Tato třída generuje náhodná čísla pomocí lineárního kongruentního generátoru (viz kapitola [[Pseudorandom_number_generators/cs#Line.C3.A1rn.C3.AD_kongruentn.C3.AD_gener.C3.A1tor|Lineární kongruentní generátor]]). Generování je tedy velmi rychlé, ale nelze využít na jiné bezpečnostní či identifikační účely.&amp;lt;ref name=&amp;quot;thompson&amp;quot;&amp;gt;THOMPSON, John. &amp;lt;i&amp;gt;Random Number Generation in Java - DZone Java&amp;lt;/i&amp;gt; [online]. 2017 [cit. 2019-05-29] Dostupné z: https://dzone.com/articles/random-number-generation-in-java&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Závěr=&lt;br /&gt;
Generátory pseudonáhodných čísel jsou nepostradatelnou součástí programovacích jazyků, simulačních prostředí a dalších softwarů. Oproti generátorům skutečně náhodných čísel mají své výhody jako rychlost a opakovatelnost v místech, kde si to přejeme, ale na druhou stranu trpí nedostatkem náhodnosti, protože posloupnost získávaných čísel se může v jistém bodě znovu opakovat. Proto se nehodí pro bezpečnost či hazard. Vždy bychom si proto měli být vědomi, který typ generátoru používáme, jak rychle potřebujeme čísla dostávat a jak moc nám záleží na nevyzpytatelnosti generovaných čísel.&lt;br /&gt;
&lt;br /&gt;
=Citace=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18030</id>
		<title>Pseudorandom number generators/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18030"/>
		<updated>2019-05-29T20:05:18Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Doplnění externích odkazů&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Úvod=&lt;br /&gt;
Programátoři i lidé, využívající v počítačových technologiích náhodná čísla, se často domnívají, že jsou náhodná generovaná čísla opravdu zcela náhodná, anebo nad tím ani příliš nepřemýšlí a prostě se na náhodnost spoléhají. Nicméně v IT světě není nic zcela náhodného. Ať už jsou vstupy do systému jistým způsobem předpověditelné dle statistických údajů (například díky dlouhodobému měření), i u náhodnosti postupuje počítač dle nějakého [https://cs.wikipedia.org/wiki/Algoritmus algoritmu]. Dokonce i člověk, pokud má dát nějaké zcela náhodné číslo, lze jeho číslo pomocí tzv. [https://cs.wikipedia.org/wiki/Benfordův_zákon Benfordova zákona] očekávat v určitém formátu. Bavíme se tedy ještě o světě náhodnosti nebo o propracovaných algoritmech, které se tak pouze tváří a které si v běžném životě ani neuvědomujeme?&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná čísla==&lt;br /&gt;
Vzhledem k tomu, že generovaná čísla skutečně nejsou naprosto náhodná, označují se tato čísla jako [https://cs.wikipedia.org/wiki/Pseudonáhodná_čísla pseudonáhodná]. Pokud bychom se chtěli opravdu více přiblížit náhodě, můžeme sáhnout po přírodních zákonech a nechat si pomoci. Své o tom ví i HotBits (viz [[Pseudorandom_number_generators/cs#Fyzik.C3.A1ln.C3.AD_gener.C3.A1tory_n.C3.A1hodn.C3.BDch_.C4.8D.C3.ADsel|Fyzikální generátory náhodných čísel]]).&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná nebo náhodná čísla?==&lt;br /&gt;
Může vyvstat otázka, zda je lepší sada čistě náhodných čísel nebo [https://cs.wikipedia.org/wiki/Pseudonáhodná_čísla pseudonáhodných čísel]. Náhodná čísla například generovaná člověkem nebo přírodou mohou být nevhodná vzhledem k tomu, že některá čísla se opakují vícekrát a jiné méněkrát. Náhodnost může být ovlivněna tím, že člověk X ve výčtu od 1 do 100 preferuje častěji spíše čísla pod 50 a čísla nad 50 se vyskytují méně. Je zde ovšem porušena 100% náhodnost neboť každé číslo z výběru nemá naprosto stejnou pravděpodobnost výběru jako ostatní čísla. Taktéž výběr nevhodného přírodního jevu může způsobit, že některá čísla se vyskytují méně. V potaz můžeme vzít například [https://cs.wikipedia.org/wiki/Barvy_šumu šum] pozadí. Jenže i šum existuje v různých barvách a tudíž se opět dostávají ke slovu některé hodnoty více než jiné.&lt;br /&gt;
V pseudonáhodných posloupnostech je hlídáno, aby bylo rozdělení náhodné veličiny opravdu pseudonáhodné s výskytem rovnoměrným dle vybrané [https://cs.wikipedia.org/wiki/Pravděpodobnostní_funkce pravděpodobnostní funkce]. Generování poté už není zcela náhodné, ale rozdělení hodnot se tak tváří. Vybráním vhodné pravděpodobnostní funkce můžeme pravděpodobnost čísel ovlivnit, avšak o zbytek se stará už generátor.&lt;br /&gt;
U skutečně náhodných čísel může být také problém v jejich pomalejším získávání, zatímco generátor pseudonáhodných čísel plní pouze funkce algoritmů a může tak dodat kvanta náhodných hodnot během malé chvíle. Tam, kde tedy nezáleží příliš na náhodnosti, kde je potřeba spousta náhodných čísel během chvilky a kde je potřeba občas danou posloupnost hodnot zopakovat, se může více hodit posloupnost pseudonáhodných čísel. V oblastech hazardu či kryptografie, kde je naopak nežádoucí opakování posloupností, je naopak spíše žádán generátor skutečně náhodných čísel generovaných různými fyzikálními jevy.&lt;br /&gt;
Ku příkladu je jasné, že by lidé sázející ve sportce neměli důvěru v losovaná čísla, pokud by byla vylosována [https://cs.wikipedia.org/wiki/Algoritmus algoritmem]. A problém by nevyvstal pouze v nedůvěře. Chytří lidé by si čísla zapisovali tak dlouho, dokud by nenašli řád mezi losovanými čísly a tím by mohli odhalit algoritmus, což si nepřeje ani sázková kancelář. Točení míčků je tedy sice také dáno [https://cs.wikipedia.org/wiki/Algoritmus algoritmem] fyzikálním (tření, gravitace, spin, akce a reakce a další), ovšem počáteční seed je vždy náhodný, moment vytažení také, a tak je výsledek pokaždé jiný.&lt;br /&gt;
&lt;br /&gt;
=Fyzikální generátory náhodných čísel=&lt;br /&gt;
[https://cs.wikipedia.org/wiki/Generátor_náhodných_čísel Fyzikální generátory] jsou založeny na fyzikálních jevech, produkující nějaký [https://cs.wikipedia.org/wiki/Barvy_šumu šum]. Ať už se jedná o atmosférický šum či využití [https://cs.wikipedia.org/wiki/Fotoelektrický_jev fotoelektrického jevu]. V následujících podkapitolách si ukážeme praktické příklady generátorů náhodných čísel TRNG (True Random Number Generator – Pravý generátor náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==HotBits==&lt;br /&gt;
Jednou z firem, získávající data tímto způsobem je švýcarská [http://www.fourmilab.ch/hotbits/ HotBits] jenž generuje posloupnost pseudonáhodných bajtů na základě generátoru, který se řídí [https://cs.wikipedia.org/wiki/Radioaktivita#Zákon_radioaktivní_přeměny radioaktivním rozpadem částic], detekovaných v Geiger-Müllerové trubici propojené s počítačem. V tomto případě byl tedy generátor pseudonáhodných čísel nahrazen přírodním algoritmem. &amp;lt;ref name=&amp;quot;walker&amp;quot;&amp;gt;WALKER, John. &amp;lt;i&amp;gt;HotBits: Genuine Random Numbers&amp;lt;/i&amp;gt; [online]. 1996 [cit. 2019-05-29]. Dostupné z: http://www.fourmilab.ch/hotbits/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RADOM.ORG==&lt;br /&gt;
Další online službou je [https://www.random.org/randomness/ RANDOM.ORG], která získává náhodná čísla díky atmosférickému šumu. Je ale zapotřebí si hlídat nežádoucí šum, jako například ventilátor z počítače, který šum může ovlivnit a zanášet do něj svůj šum. Problém je pochopitelně v tom, že ventilátor produkuje pravidelný šum, který může náhodnost šumu snížit. [https://www.random.org/randomness/ RANDOM.ORG] samozřejmě využívá faktu, že nikdo nezná rozpoložení a pohyb všech [https://cs.wikipedia.org/wiki/Molekula molekul] vzduchu na planetě, proto se ani generovaná čísla nedají odhadnout. Místy navíc může zuřit nevyzpytatelná bouřka, což může šum také ovlivnit.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Silicon Graphics==&lt;br /&gt;
Jedná se o [https://cs.wikipedia.org/wiki/Silicon_Graphics amerického výrobce] počítačového [https://cs.wikipedia.org/wiki/Hardware hardwaru], který přišel s tzv. [https://cs.wikipedia.org/wiki/Lavarand lavarand generátorem]. Jeho principem je snímkování lávové lampy, v níž se volně a náhodně pohybuje materiál. Ten je snímkován jako vzor a z těchto snímků pak generátor vytváří posloupnosti náhodných dat. Protože pohyb materiálu je náhodný, jsou pak i čísla zcela náhodná.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generátor na základě lidského vstupu==&lt;br /&gt;
Existují také generátory, které generují náhodná čísla z pohybu PC myši či z intervalů mezi jednotlivými stisky kláves na klávesnici. Zde ovšem vyvstává problém v tom, že operační systém načítá rychlé stisky kláves do bufferu a odesílá po více znacích najednou. To samozřejmě ovlivňuje náhodnost dat. &amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generování čísel míčky==&lt;br /&gt;
Tento generátor se využívá konkrétně v Sazce. Protože se zde hraje o vysoké peněžní částky, je pochopitelné, že čísla nejsou generována generátorem pseudonáhodných čísel. Přestože můžeme říci, že jsou do procesu výběru zapojeny fyzikální algoritmy (přitažlivá síla na základě hmotnosti míčků, třecí síla, zákon akce a reakce při odrazech a další), je výsledek těchto algoritmů tak složitý, jako louskání některých klíčů či komunikace v oboru kryptografie.&lt;br /&gt;
Generování probíhá tak, že je notářem vybrána jedena z osmi sad míčků. Míčky jsou následně zkontrolovány, zda není některý z nich poškozený, zda jsou všechny čisté a zda nejsou poškozeny štítky s čísly, které musí být 100% čitelné. Dále je provedena kontrola losování, aby bylo jisté, že vše funguje bezchybně a nenastane během losování žádná chyba. Teprve pak je spuštěno losování neboli generování náhodných čísel (u Sazky v rozmezí 1-80 včetně). Je zřejmé že v Sazce generátor určí, komu připadne obrovská suma peněz, proto je celý proces generování možná jedním z nejostřeji nejsledovanějších, ať už notáři, techniky, ale i veřejností.&amp;lt;ref name=&amp;quot;krejci&amp;quot;&amp;gt;KREJČÍ, Ondřej. &amp;lt;i&amp;gt;Průběh losování loterií v Sazce odhalen | Vyhraj.com&amp;lt;/i&amp;gt; [online]. 2016 [cit. 2019-05-29] Dostupné z: https://vyhraj.com/jak-probiha-losovani/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generátory pseudonáhodných čísel v praxi=&lt;br /&gt;
Tyto generátory nachází své uplatnění v místech, kde jistá pravidelnost není na obtíž nebo kde je potřeba se k vygenerované sekvenci dostat vícekrát. Své uplatnění najdou například v přehrávačích hudby, kde je zapnuta funkce náhodného výběru další skladby. Dále pak také v simulacích či modelování.&amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lineární kongruentní generátor==&lt;br /&gt;
[https://cs.wikipedia.org/wiki/Lineární_kongruentní_generátor Lineární kongruentní generátor] je jedním z nejstarších a dle &amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt; také nejrozšířenější z generátorů pseudonáhodných čísel. Každý další prvek je spočítán pomocí funkce &amp;lt;math&amp;gt;x_{n+1}=(l\times x_n+m)\bmod{M}&amp;lt;/math&amp;gt;, přičemž &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; je horní mez velikosti prvků, která má funkci modulo neboli zbytek po dělení číslem &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Pokud je například &amp;lt;math&amp;gt;M=10&amp;lt;/math&amp;gt;, pak nejvyšší náhodné číslo bude 9.&lt;br /&gt;
Pokud kupříkladu zvolíme &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; rovno 27, &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; rovno 5, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; rovno 9 a první prvek (seed) zvolíme 8, pak další čísla dle výše uvedeného vztahu budou 22, 11, 10, 5, 7, 17 atd. U 19. prvku ovšem dostáváme opět 8, 22, 11 a řada se celá opakuje. Nevhodnou volbou parametrů se může stát, že bude opakování častější.&lt;br /&gt;
UNIXová funkce rand() (viz [[Pseudorandom_number_generators/cs#Gener.C3.A1tory_programovac.C3.ADch_jazyk.C5.AF|Generátory programovacích jazyků]]) používá tento generátor také a to s parametry &amp;lt;math&amp;gt;l=1103515245&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m=12345&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;M=2^{32}&amp;lt;/math&amp;gt;. &amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Pro počítače IBM byl zase generátor &amp;lt;math&amp;gt;x_{n+1}=(65539\times x_n) \bmod{2^{31}}&amp;lt;/math&amp;gt;.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fibonacciho generátor==&lt;br /&gt;
Fibonacciho generátor se odvíjí od [https://cs.wikipedia.org/wiki/Fibonacciho_posloupnost Fibonacciho posloupnosti], kde každý další prvek je součtem předchozích dvou. Posloupnost začíná při počátku v 1 jako 1, 2, 3, 5, 8, 13, 21 atd. Pokud přidáme jako u předchozího generátoru opět &amp;lt;math&amp;gt;\bmod{M}&amp;lt;/math&amp;gt;, omezíme získaná čísla zase na celočíselné zbytky po dělení &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; a tím stanovíme horní mez pro získané hodnoty. Podobně založen byl Millerův a Prenticův generátor, který byl definován vzorcem &amp;lt;math&amp;gt;x_{n+1}=(x_{n-2}+x_{n-3})\bmod{3137}&amp;lt;/math&amp;gt;, jenž má periodu po 9843907 prvcích.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mersenne Twister==&lt;br /&gt;
Algoritmus Mersenne Twister (také jako MT19937) je nejen velmi rychlý, ale má i velkou periodu (počet čísel, po které se začne řada opakovat) &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt;. Je dokonce rychlejší než [[Pseudorandom_number_generators/cs#Line.C3.A1rn.C3.AD_kongruentn.C3.AD_gener.C3.A1tor|lineárně kongruentní generátor]], ovšem je mnohem náročnější na paměť. Díky své rychlosti a velké periodicitě se výborně hodí pro různé simulace.&amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
Stojí za zmínku, že tento algoritmus je mimo jiné také využit ke generování náhodných čísel pro funkci &amp;lt;code&amp;gt;RAND&amp;lt;/code&amp;gt; (česky &amp;lt;code&amp;gt;NÁHČÍSLO&amp;lt;/code&amp;gt;), a to konkrétně v Officech 2010 &amp;lt;ref name=&amp;quot;microsoft&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;RAND function - Office Support&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://support.office.com/en-us/article/rand-function-4cbfa695-8869-4788-8d90-021ea9f5be73&amp;lt;/ref&amp;gt;, a pak je také tento generátor využit v Simulačním softwaru NetLogo, kde je také použit ke generování ve funkci &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; &amp;lt;ref name=&amp;quot;nazev&amp;quot;&amp;gt;WILENSKY, Uri. &amp;lt;i&amp;gt;NetLogo Models Library: Random Basic&amp;lt;/i&amp;gt; [online]. 2004 [cit. 2019-05-29] Dostupné z: https://ccl.northwestern.edu/netlogo/models/RandomBasic&amp;lt;/ref&amp;gt;. MT19937 je využit v mnohých softwarech od MS Office až po různé simulační programy a v neposlední řadě také v mnoha programovacích jazycích.&lt;br /&gt;
&lt;br /&gt;
==Complimentary-multiply-with-carry==&lt;br /&gt;
Jedná se o alternativu k algoritmu [[Pseudorandom_number_generators/cs#Mersenne_Twister|Mersenne Twister]], který má ještě větší periodu &amp;lt;math&amp;gt;2^{131086}&amp;lt;/math&amp;gt; a je ještě rychlejší, ale opět paměťově ještě náročnější. &amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MS Excel generátor pseudonáhodných čísel==&lt;br /&gt;
[[File:Excel generator.PNG|thumb|left|Náhled možností generátoru v MS Excel]]&lt;br /&gt;
[[File:RovnomerneRozdeleni1.PNG|thumb|right|První graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni2.PNG|thumb|right|Druhý graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni3.PNG|thumb|right|Třetí graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
MS Excel obsahuje v sobě zabudovaný též generátor pseudonáhodných čísel. Jak bylo zmíněno výše (viz [[Pseudorandom_number_generators/cs#Mersenne_Twister|Mersenne Twister]]), pracuje na principu MT19937, což znamená, že jeho periodicita je po &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt; prvcích. Najdeme jej pod kartou ''Data'' a následně ''Analýza dat''. Jedná se o doplněk, který musí být dodatečně dodán. Po kliknutí vybereme ''Generátor pseudonáhodných čísel''. Následné okno je přizpůsobeno podle volby Typu rozložení. Co je ale společné, je počet proměnných (udává počet generovaných sloupců) a počet náhodných čísel (počet generovaných řádků). Pokud se pokusíme o rovnoměrné rozdělení, můžeme se podívat, jak tyto generátory fungují. Pro názornost byly vybrány 3 sloupce po 1000 čísel od 1 do 1000. Obrázky na pravé straně zachycují histogram z určitých intervalů. Můžeme vidět, že se algoritmus opravdu snaží o rovnoměrné rozmístění náhodných čísel. Jen tak pro zajímavost, směrodatné odchylky jsou pro první graf 28.72, pro druhý 28.08 a pro třetí 28.94. Vidíme tedy že [https://cs.wikipedia.org/wiki/Algoritmus algoritmus] se opravdu držel nízké odchylky, přičemž ve druhé posloupnosti se mu to dařilo nejlépe a v poslední nejhůře. U třetího totiž upřednostňoval více čísla z inervalu 1-11.&lt;br /&gt;
Pokud vyzkoušíme generátor například [https://cs.wikipedia.org/wiki/Normální_rozdělení Normálního rozdělení], algoritmus opět hlídá rovnoměrnost dle nastavených parametrů. Opět ale každá řada vychází jinak.&lt;br /&gt;
Narážíme zde na zmíněnou výhodu a nevýhodu zároveň, a sice opakovatelnost pseudonáhodných posloupností. Ať se mohou vygenerovaná čísla jevit jakkoliv náhodná, byla vypočítána algoritmem. Klíčové políčko je v nastavení generátoru Základ generátoru (neboli seed). Pokud vygenerujeme posloupnost např. 1000 čísel od 1 do 100 a zadáme základ například 3, při každém dalším pokusu se stejnými parametry a hlavně základem dostáváme opět tutéž samou posloupnost čísel. To je v různých oborech žádoucí a v jiných nikoliv.&lt;br /&gt;
&lt;br /&gt;
==Kryptografie==&lt;br /&gt;
Náhodná čísla se uplatňují také v oboru [https://cs.wikipedia.org/wiki/Kryptografie kryptografie], ať už se jedná o [https://cs.wikipedia.org/wiki/Elektronický_podpis elektronické podpisy] nebo [https://cs.wikipedia.org/wiki/Šifrování_dat šifrování dat]. Ku příkladu můžeme uvést RSA generátor, který je používán pro generování bezpečné RSA šifry. Pro [https://cs.wikipedia.org/wiki/RSA RSA šifru] je potřeba vygenerovat dle předepsaného algoritmu klíč veřejný a privátní. Zjištění privátního klíče není nemožné, ovšem zabere tolik času, že jsou data již neaktuální.&amp;lt;ref name=&amp;quot;serf&amp;quot;&amp;gt;ŠERF, Robert. &amp;lt;i&amp;gt;Generátory pseudonáhodných čísel a jejich implementace v (kryptografických) knihovnách a kryptografických protokolech&amp;lt;/i&amp;gt; [online]. 2006 [cit. 2019-05-29] Dostupné z: https://is.muni.cz/th/bg71g/bc.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
Posuneme-li se dále, bude nás zajímat, co vše musí generátor pseudonáhodných čísel v kryptografii splňovat. Je zřejmé, že kryptografie je citlivý obor, kde budou kladeny vyšší nároky na generátor pseudonáhodných čísel.&lt;br /&gt;
* Čísla musí být pseudonáhodná, což znamená, že nelze v relativně blízké době s pravděpodobností větší než 50 % zjistit další číslo.&lt;br /&gt;
* I za předpokladu, že uniknou data o stavu generátoru nesmí být snadné opět zjistit již vygenerovanou sekvenci. Této podmínce říkáme dopředná bezpečnost.&lt;br /&gt;
* Pokud se útočník dostane k datům generátoru a zná tak jeho současný stav, i přesto by neměl být schopen generovat stejná čísla jako generátor. Této podmínce se říká zpětná bezpečnost a můžeme jí docílit například pravidelným přidáváním entropie do současného stavu.&lt;br /&gt;
&lt;br /&gt;
==Generátory programovacích jazyků==&lt;br /&gt;
===C===&lt;br /&gt;
Pro linuxový [https://cs.wikipedia.org/wiki/C_(programovací_jazyk) jazyk C] je pro práci s pseudonáhodnými čísly použita funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;srand()&amp;lt;/code&amp;gt; ze standardní funkce &amp;lt;code&amp;gt;&amp;lt;stdlib.h&amp;gt;&amp;lt;/code&amp;gt;. Funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; vrací náhodné číslo od 0 do &amp;lt;code&amp;gt;RAND_MAX&amp;lt;/code&amp;gt;, funkce &amp;lt;code&amp;gt;srand&amp;lt;/code&amp;gt; čísla nevrací, ale poskytuje možnost zadání seed neboli počátku (pro případ, že budeme chtít posloupnost zopakovat) pro funkci &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt;. Bohužel se tyto funkce ukázaly jako špatná volba pro dostatečnou náhodnost generovaných čísel. Proto nejsou vhodné k použití, kde je potřeba dobrá náhoda čísel, jako například v kryptografii. &amp;lt;ref name=&amp;quot;linux&amp;quot;&amp;gt;linux.die.net &amp;lt;i&amp;gt;rand(3): pseudo-random number generator - Linux man page&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://linux.die.net/man/3/rand&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===C#===&lt;br /&gt;
Ve světě [https://cs.wikipedia.org/wiki/C_Sharp C#] existuje třída pro práci s pseudonáhodnými čísly &amp;lt;code&amp;gt;System.Random&amp;lt;/code&amp;gt;. Tato třída se inicializuje formou semínka seed (pokud není zadáno, použije se aktuální datum a čas). Dále pak obsahuje funkce &amp;lt;code&amp;gt;Next()&amp;lt;/code&amp;gt;, která vrátí další pseudonáhodné číslo, &amp;lt;code&amp;gt;Next(Int32)&amp;lt;/code&amp;gt;, vracející pseudonáhodná čísla menší než zadaný parametr a nakonec &amp;lt;code&amp;gt;Next(Int32,Int32)&amp;lt;/code&amp;gt; vracející čísla větší než první argument a menší než druhý argument. Generátor v jazyce C# se zdá být mnohem lepší než pro [https://cs.wikipedia.org/wiki/C_(programovací_jazyk) jazyk C], ovšem problém nastává ve chvíli, kdy ve stejném cyklu pokaždé inicializujeme &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; a následně vygenerujeme další číslo. Protože cykly probíhají standardně velmi rychle, je semínko většinu cyklů stejné, a tak se může stát, že dostaneme více stejných čísel. Tomu se pochopitelně můžeme vyhnout tím, že &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; inicializujeme pouze jednou. Další problém nastává, pokud používáme více vláken &amp;lt;code&amp;gt;Thread&amp;lt;/code&amp;gt;. Zde se doporučuje, aby si každé vlákno inicializovalo svou instanci &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt;. &amp;lt;ref name=&amp;quot;skeet&amp;quot;&amp;gt;SKEET, Jon. &amp;lt;i&amp;gt;Random numbers&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://csharpindepth.com/articles/Random&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
Pro [https://cs.wikipedia.org/wiki/Java_(programovací_jazyk) jazyk Java] lze využít hned dvě různé funkce &amp;lt;code&amp;gt;Random()&amp;lt;/code&amp;gt;, každá z jiné knihovny. První je z knihovny &amp;lt;code&amp;gt;java.lang.Math&amp;lt;/code&amp;gt; a druhá z &amp;lt;code&amp;gt;java.util.Random&amp;lt;/code&amp;gt;.&lt;br /&gt;
Při použití &amp;lt;code&amp;gt;Math.random()&amp;lt;/code&amp;gt; dostáváme hodnoty v rozsahu 0 až 1. Můžeme tedy dostat číslo například 0.42589632565639872. Pochopitelně zapojením této funkce s dalším upravujícím kódem lze funkci přizpůsobit, aby vracela čísla v jiném rozsahu.&lt;br /&gt;
Třída &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; jakožto druhá varianta pak umí vracet více typů jako &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; či &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt;. Tato třída generuje náhodná čísla pomocí lineárního kongruentního generátoru (viz kapitola [[Pseudorandom_number_generators/cs#Line.C3.A1rn.C3.AD_kongruentn.C3.AD_gener.C3.A1tor|Lineární kongruentní generátor]]). Generování je tedy velmi rychlé, ale nelze využít na jiné bezpečnostní či identifikační účely.&amp;lt;ref name=&amp;quot;thompson&amp;quot;&amp;gt;THOMPSON, John. &amp;lt;i&amp;gt;Random Number Generation in Java - DZone Java&amp;lt;/i&amp;gt; [online]. 2017 [cit. 2019-05-29] Dostupné z: https://dzone.com/articles/random-number-generation-in-java&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Závěr=&lt;br /&gt;
Generátory pseudonáhodných čísel jsou nepostradatelnou součástí programovacích jazyků, simulačních prostředí a dalších softwarů. Oproti generátorům skutečně náhodných čísel mají své výhody jako rychlost a opakovatelnost v místech, kde si to přejeme, ale na druhou stranu trpí nedostatkem náhodnosti, protože posloupnost získávaných čísel se může v jistém bodě znovu opakovat. Proto se nehodí pro bezpečnost či hazard. Vždy bychom si proto měli být vědomi, který typ generátoru používáme, jak rychle potřebujeme čísla dostávat a jak moc nám záleží na nevyzpytatelnosti generovaných čísel.&lt;br /&gt;
&lt;br /&gt;
=Citace=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18029</id>
		<title>Pseudorandom number generators/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18029"/>
		<updated>2019-05-29T18:38:59Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Úvod=&lt;br /&gt;
Programátoři i lidé, využívající v počítačových technologiích náhodná čísla, se často domnívají, že jsou náhodná generovaná čísla opravdu zcela náhodná, anebo nad tím ani příliš nepřemýšlí a prostě se na náhodnost spoléhají. Nicméně v IT světě není nic zcela náhodného. Ať už jsou vstupy do systému jistým způsobem předpověditelné dle statistických údajů (například díky dlouhodobému měření), i u náhodnosti postupuje počítač dle nějakého algoritmu. Dokonce i člověk, pokud má dát nějaké zcela náhodné číslo, lze jeho číslo pomocí tzv. Benfordova zákona očekávat v určitém formátu. Bavíme se tedy ještě o světě náhodnosti nebo o propracovaných algoritmech, které se tak pouze tváří a které si v běžném životě ani neuvědomujeme?&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná čísla==&lt;br /&gt;
Vzhledem k tomu, že generovaná čísla skutečně nejsou naprosto náhodná, označují se tato čísla jako pseudonáhodná. Pokud bychom se chtěli opravdu více přiblížit náhodě, můžeme sáhnout po přírodních zákonech a nechat si pomoci. Své o tom ví i HotBits (viz Fyzikální generátory náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná nebo náhodná čísla?==&lt;br /&gt;
Může vyvstat otázka, zda je lepší sada čistě náhodných čísel nebo pseudonáhodných čísel. Náhodná čísla například generovaná člověkem nebo přírodou mohou být nevhodná vzhledem k tomu, že některá čísla se opakují vícekrát a jiné méněkrát. Náhodnost může být ovlivněna tím, že člověk X ve výčtu od 1 do 100 preferuje častěji spíše čísla pod 50 a čísla nad 50 se vyskytují méně. Je zde ovšem porušena 100% náhodnost neboť každé číslo z výběru nemá naprosto stejnou pravděpodobnost výběru jako ostatní čísla. Taktéž výběr nevhodného přírodního jevu může způsobit, že některá čísla se vyskytují méně. V potaz můžeme vzít například šum pozadí. Jenže i šum existuje v různých barvách a tudíž se opět dostávají ke slovu některé hodnoty více než jiné.&lt;br /&gt;
V pseudonáhodných posloupnostech je hlídáno, aby bylo rozdělení náhodné veličiny opravdu pseudonáhodné s výskytem rovnoměrným dle vybrané pravděpodobnostní funkce. Generování poté už není zcela náhodné, ale rozdělení hodnot se tak tváří. Vybráním vhodné pravděpodobnostní funkce můžeme pravděpodobnost čísel ovlivnit, avšak o zbytek se stará už generátor.&lt;br /&gt;
U skutečně náhodných čísel může být také problém v jejich pomalejším získávání, zatímco generátor pseudonáhodných čísel plní pouze funkce algoritmů a může tak dodat kvanta náhodných hodnot během malé chvíle. Tam, kde tedy nezáleží příliš na náhodnosti, kde je potřeba spousta náhodných čísel během chvilky a kde je potřeba občas danou posloupnost hodnot zopakovat, se může více hodit posloupnost pseudonáhodných čísel. V oblastech hazardu či kryptografie, kde je naopak nežádoucí opakování posloupností, je naopak spíše žádán generátor skutečně náhodných čísel generovaných různými fyzikálními jevy.&lt;br /&gt;
Ku příkladu je jasné, že by lidé sázející ve sportce neměli důvěru v losovaná čísla, pokud by byla vylosována algoritmem. A problém by nevyvstal pouze v nedůvěře. Chytří lidé by si čísla zapisovali tak dlouho, dokud by nenašli řád mezi losovanými čísly a tím by mohli odhalit algoritmus, což si nepřeje ani sázková kancelář. Točení míčků je tedy sice také dáno algoritmem fyzikálním (tření, gravitace, spin, akce a reakce a další), ovšem počáteční seed je vždy náhodný, moment vytažení také, a tak je výsledek pokaždé jiný.&lt;br /&gt;
&lt;br /&gt;
=Fyzikální generátory náhodných čísel=&lt;br /&gt;
Fyzikální generátory jsou založeny na fyzikálních jevech, produkující nějaký šum. Ať už se jedná o atmosférický šum či využití fotoelektrického jevu. V následujících podkapitolách si ukážeme praktické příklady generátorů náhodných čísel TRNG (True Random Number Generator – Pravý generátor náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==HotBits==&lt;br /&gt;
Jednou z firem, získávající data tímto způsobem je švýcarská HotBits jenž generuje posloupnost pseudonáhodných bajtů na základě generátoru, který se řídí radioaktivním rozpadem částic, detekovaných v Geiger-Müllerové trubici propojené s počítačem. V tomto případě byl tedy generátor pseudonáhodných čísel nahrazen přírodním algoritmem. &amp;lt;ref name=&amp;quot;walker&amp;quot;&amp;gt;WALKER, John. &amp;lt;i&amp;gt;HotBits: Genuine Random Numbers&amp;lt;/i&amp;gt; [online]. 1996 [cit. 2019-05-29]. Dostupné z: http://www.fourmilab.ch/hotbits/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RADOM.ORG==&lt;br /&gt;
Další online službou je RANDOM.ORG, která získává náhodná čísla díky atmosférickému šumu. Je ale zapotřebí si hlídat nežádoucí šum, jako například ventilátor z počítače, který šum může ovlivnit a zanášet do něj svůj šum. Problém je pochopitelně v tom, že ventilátor produkuje pravidelný šum, který může náhodnost šumu snížit. RANDOM.ORG samozřejmě využívá faktu, že nikdo nezná rozpoložení a pohyb všech molekul vzduchu na planetě, proto se ani generovaná čísla nedají odhadnout. Místy navíc může zuřit nevyzpytatelná bouřka, což může šum také ovlivnit.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Silicon Graphics==&lt;br /&gt;
Jedná se o amerického výrobce počítačového hardwaru, který přišel s tzv. lavarand generátorem. Jeho principem je snímkování lávové lampy, v níž se volně a náhodně pohybuje materiál. Ten je snímkován jako vzor a z těchto snímků pak generátor vytváří posloupnosti náhodných dat. Protože pohyb materiálu je náhodný, jsou pak i čísla zcela náhodná.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generátor na základě lidského vstupu==&lt;br /&gt;
Existují také generátory, které generují náhodná čísla z pohybu PC myši či z intervalů mezi jednotlivými stisky kláves na klávesnici. Zde ovšem vyvstává problém v tom, že operační systém načítá rychlé stisky kláves do bufferu a odesílá po více znacích najednou. To samozřejmě ovlivňuje náhodnost dat. &amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generování čísel míčky==&lt;br /&gt;
Tento generátor se využívá konkrétně v Sazce. Protože se zde hraje o vysoké peněžní částky, je pochopitelné, že čísla nejsou generována generátorem pseudonáhodných čísel. Přestože můžeme říci, že jsou do procesu výběru zapojeny fyzikální algoritmy (přitažlivá síla na základě hmotnosti míčků, třecí síla, zákon akce a reakce při odrazech a další), je výsledek těchto algoritmů tak složitý, jako louskání některých klíčů či komunikace v oboru kryptografie.&lt;br /&gt;
Generování probíhá tak, že je notářem vybrána jedena z osmi sad míčků. Míčky jsou následně zkontrolovány, zda není některý z nich poškozený, zda jsou všechny čisté a zda nejsou poškozeny štítky s čísly, které musí být 100% čitelné. Dále je provedena kontrola losování, aby bylo jisté, že vše funguje bezchybně a nenastane během losování žádná chyba. Teprve pak je spuštěno losování neboli generování náhodných čísel (u Sazky v rozmezí 1-80 včetně). Je zřejmé že v Sazce generátor určí, komu připadne obrovská suma peněz, proto je celý proces generování možná jedním z nejostřeji nejsledovanějších, ať už notáři, techniky, ale i veřejností.&amp;lt;ref name=&amp;quot;krejci&amp;quot;&amp;gt;KREJČÍ, Ondřej. &amp;lt;i&amp;gt;Průběh losování loterií v Sazce odhalen | Vyhraj.com&amp;lt;/i&amp;gt; [online]. 2016 [cit. 2019-05-29] Dostupné z: https://vyhraj.com/jak-probiha-losovani/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generátory pseudonáhodných čísel v praxi=&lt;br /&gt;
Tyto generátory nachází své uplatnění v místech, kde jistá pravidelnost není na obtíž nebo kde je potřeba se k vygenerované sekvenci dostat vícekrát. Své uplatnění najdou například v přehrávačích hudby, kde je zapnuta funkce náhodného výběru další skladby. Dále pak také v simulacích či modelování.&amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lineární kongruentní generátor==&lt;br /&gt;
Lineární kongruentní generátor je jedním z nejstarších a dle (Dorda, nedatováno) také nejrozšířenější z generátorů pseudonáhodných čísel. Každý další prvek je spočítán pomocí funkce &amp;lt;math&amp;gt;x_{n+1}=(l\times x_n+m)\bmod{M}&amp;lt;/math&amp;gt;, přičemž &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; je horní mez velikosti prvků, která má funkci modulo neboli zbytek po dělení číslem &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Pokud je například &amp;lt;math&amp;gt;M=10&amp;lt;/math&amp;gt;, pak nejvyšší náhodné číslo bude 9.&lt;br /&gt;
Pokud kupříkladu zvolíme &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; rovno 27, &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; rovno 5, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; rovno 9 a první prvek (seed) zvolíme 8, pak další čísla dle výše uvedeného vztahu budou 22, 11, 10, 5, 7, 17 atd. U 19. prvku ovšem dostáváme opět 8, 22, 11 a řada se celá opakuje. Nevhodnou volbou parametrů se může stát, že bude opakování častější.&lt;br /&gt;
UNIXová funkce rand() (viz Generátory programovacích jazyků) používá tento generátor také a to s parametry &amp;lt;math&amp;gt;l=1103515245&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m=12345&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;M=2^{32}&amp;lt;/math&amp;gt;. &amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Pro počítače IBM byl zase generátor &amp;lt;math&amp;gt;x_{n+1}=(65539\times x_n) \bmod{2^{31}}&amp;lt;/math&amp;gt;.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fibonacciho generátor==&lt;br /&gt;
Fibonacciho generátor se odvíjí od Fibonacciho posloupnosti, kde každý další prvek je součtem předchozích dvou. Posloupnost začíná při počátku v 1 jako 1, 2, 3, 5, 8, 13, 21 atd. Pokud přidáme jako u předchozího generátoru opět &amp;lt;math&amp;gt;\bmod{M}&amp;lt;/math&amp;gt;, omezíme získaná čísla zase na celočíselné zbytky po dělení &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; a tím stanovíme horní mez pro získané hodnoty. Podobně založen byl Millerův a Prenticův generátor, který byl definován vzorcem &amp;lt;math&amp;gt;x_{n+1}=(x_{n-2}+x_{n-3})\bmod{3137}&amp;lt;/math&amp;gt;, jenž má periodu po 9843907 prvcích.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mersenne Twister==&lt;br /&gt;
Algoritmus Mersenne Twister (také jako MT19937) je nejen velmi rychlý, ale má i velkou periodu (počet čísel, po které se začne řada opakovat) &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt;. Je dokonce rychlejší než lineárně kongruentní generátor, ovšem je mnohem náročnější na paměť. Díky své rychlosti a velké periodicitě se výborně hodí pro různé simulace.&amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
Stojí za zmínku, že tento algoritmus je mimo jiné také využit ke generování náhodných čísel pro funkci &amp;lt;code&amp;gt;RAND&amp;lt;/code&amp;gt; (česky &amp;lt;code&amp;gt;NÁHČÍSLO&amp;lt;/code&amp;gt;), a to konkrétně v Officech 2010 &amp;lt;ref name=&amp;quot;microsoft&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;RAND function - Office Support&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://support.office.com/en-us/article/rand-function-4cbfa695-8869-4788-8d90-021ea9f5be73&amp;lt;/ref&amp;gt;, a pak je také tento generátor využit v Simulačním softwaru NetLogo, kde je také použit ke generování ve funkci &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; &amp;lt;ref name=&amp;quot;nazev&amp;quot;&amp;gt;WILENSKY, Uri. &amp;lt;i&amp;gt;NetLogo Models Library: Random Basic&amp;lt;/i&amp;gt; [online]. 2004 [cit. 2019-05-29] Dostupné z: https://ccl.northwestern.edu/netlogo/models/RandomBasic&amp;lt;/ref&amp;gt;. MT19937 je využit v mnohých softwarech od MS Office až po různé simulační programy a v neposlední řadě také v mnoha programovacích jazycích.&lt;br /&gt;
&lt;br /&gt;
==Complimentary-multiply-with-carry==&lt;br /&gt;
Jedná se o alternativu k algoritmu Mersenne Twister, který má ještě větší periodu &amp;lt;math&amp;gt;2^{131086}&amp;lt;/math&amp;gt; a je ještě rychlejší, ale opět paměťově ještě náročnější. &amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MS Excel generátor pseudonáhodných čísel==&lt;br /&gt;
[[File:Excel generator.PNG|thumb|left|Náhled možností generátoru v MS Excel]]&lt;br /&gt;
[[File:RovnomerneRozdeleni1.PNG|thumb|right|První graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni2.PNG|thumb|right|Druhý graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni3.PNG|thumb|right|Třetí graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
MS Excel obsahuje v sobě zabudovaný též generátor pseudonáhodných čísel. Jak bylo zmíněno výše (viz [http://www.simulace.info/index.php/Pseudorandom_number_generators/cs#Mersenne_Twister Mersenne_Twister]), pracuje na principu MT19937, což znamená, že jeho periodicita je po 2^19937-1 prvcích. Najdeme jej pod kartou Data a následně Analýza dat. Jedná se o doplněk, který musí být dodatečně dodán. Po kliknutí vybereme Generátor pseudonáhodných čísel. Následné okno je přizpůsobeno podle volby Typu rozložení. Co je ale společné, je počet proměnných (udává počet generovaných sloupců) a počet náhodných čísel (počet generovaných řádků). Pokud se pokusíme o rovnoměrné rozdělení, můžeme se podívat, jak tyto generátory fungují. Pro názornost byly vybrány 3 sloupce po 1000 čísel od 1 do 1000. Obrázky na pravé straně zachycují histogram z určitých intervalů. Můžeme vidět, že se algoritmus opravdu snaží o rovnoměrné rozmístění náhodných čísel. Jen tak pro zajímavost, směrodatné odchylky jsou pro první graf 28.72, pro druhý 28.08 a pro třetí 28.94. Vidíme tedy že algoritmus se opravdu držel nízké odchylky, přičemž ve druhé posloupnosti se mu to dařilo nejlépe a v poslední nejhůře. U třetího totiž upřednostňoval více čísla z inervalu 1-11.&lt;br /&gt;
Pokud vyzkoušíme generátor například Normálního rozdělení, algoritmus opět hlídá rovnoměrnost dle nastavených parametrů. Opět ale každá řada vychází jinak.&lt;br /&gt;
Narážíme zde na zmíněnou výhodu a nevýhodu zároveň, a sice opakovatelnost pseudonáhodných posloupností. Ať se mohou vygenerovaná čísla jevit jakkoliv náhodná, byla vypočítána algoritmem. Klíčové políčko je v nastavení generátoru Základ generátoru (neboli seed). Pokud vygenerujeme posloupnost např. 1000 čísel od 1 do 100 a zadáme základ například 3, při každém dalším pokusu se stejnými parametry a hlavně základem dostáváme opět tutéž samou posloupnost čísel. To je v různých oborech žádoucí a v jiných nikoliv.&lt;br /&gt;
&lt;br /&gt;
==Kryptografie==&lt;br /&gt;
Náhodná čísla se uplatňují také v oboru kryptografie, ať už se jedná o elektronické podpisy nebo šifrování dat. Ku příkladu můžeme uvést RSA generátor, který je používán pro generování bezpečné RSA šifry. Pro RSA šifru je potřeba vygenerovat dle předepsaného algoritmu klíč veřejný a privátní. Zjištění privátního klíče není nemožné, ovšem zabere tolik času, že jsou data již neaktuální.&amp;lt;ref name=&amp;quot;serf&amp;quot;&amp;gt;ŠERF, Robert. &amp;lt;i&amp;gt;Generátory pseudonáhodných čísel a jejich implementace v (kryptografických) knihovnách a kryptografických protokolech&amp;lt;/i&amp;gt; [online]. 2006 [cit. 2019-05-29] Dostupné z: https://is.muni.cz/th/bg71g/bc.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
Posuneme-li se dále, bude nás zajímat, co vše musí generátor pseudonáhodných čísel v kryptografii splňovat. Je zřejmé, že kryptografie je citlivý obor, kde budou kladeny vyšší nároky na generátor pseudonáhodných čísel.&lt;br /&gt;
	Čísla musí být pseudonáhodná, což znamená, že nelze v relativně blízké době s pravděpodobností větší než 50 % zjistit další číslo.&lt;br /&gt;
	I za předpokladu, že uniknou data o stavu generátoru nesmí být snadné opět zjistit již vygenerovanou sekvenci. Této podmínce říkáme dopředná bezpečnost.&lt;br /&gt;
	Pokud se útočník dostane k datům generátoru a zná tak jeho současný stav, i přesto by neměl být schopen generovat stejná čísla jako generátor. Této podmínce se říká zpětná bezpečnost a můžeme jí docílit například pravidelným přidáváním entropie do současného stavu.&lt;br /&gt;
&lt;br /&gt;
==Generátory programovacích jazyků==&lt;br /&gt;
===C===&lt;br /&gt;
Pro linuxový jazyk C je pro práci s pseudonáhodnými čísly použita funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;srand()&amp;lt;/code&amp;gt; ze standardní funkce &amp;lt;code&amp;gt;&amp;lt;stdlib.h&amp;gt;&amp;lt;/code&amp;gt;. Funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; vrací náhodné číslo od 0 do &amp;lt;code&amp;gt;RAND_MAX&amp;lt;/code&amp;gt;, funkce &amp;lt;code&amp;gt;srand&amp;lt;/code&amp;gt; čísla nevrací, ale poskytuje možnost zadání seed neboli počátku (pro případ, že budeme chtít posloupnost zopakovat) pro funkci &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt;. Bohužel se tyto funkce ukázaly jako špatná volba pro dostatečnou náhodnost generovaných čísel. Proto nejsou vhodné k použití, kde je potřeba dobrá náhoda čísel, jako například v kryptografii. &amp;lt;ref name=&amp;quot;linux&amp;quot;&amp;gt;linux.die.net &amp;lt;i&amp;gt;rand(3): pseudo-random number generator - Linux man page&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://linux.die.net/man/3/rand&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===C#===&lt;br /&gt;
Ve světě C# existuje třída pro práci s pseudonáhodnými čísly &amp;lt;code&amp;gt;System.Random&amp;lt;/code&amp;gt;. Tato třída se inicializuje formou semínka seed (pokud není zadáno, použije se aktuální datum a čas). Dále pak obsahuje funkce &amp;lt;code&amp;gt;Next()&amp;lt;/code&amp;gt;, která vrátí další pseudonáhodné číslo, &amp;lt;code&amp;gt;Next(Int32)&amp;lt;/code&amp;gt;, vracející pseudonáhodná čísla menší než zadaný parametr a nakonec &amp;lt;code&amp;gt;Next(Int32,Int32)&amp;lt;/code&amp;gt; vracející čísla větší než první argument a menší než druhý argument. Generátor v jazyce C# se zdá být mnohem lepší než pro jazyk C, ovšem problém nastává ve chvíli, kdy ve stejném cyklu pokaždé inicializujeme Random a následně vygenerujeme další číslo. Protože cykly probíhají standardně velmi rychle, je semínko většinu cyklů stejné, a tak se může stát, že dostaneme více stejných čísel. Tomu se pochopitelně můžeme vyhnout tím, že &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; inicializujeme pouze jednou. Další problém nastává, pokud používáme více vláken &amp;lt;code&amp;gt;Thread&amp;lt;/code&amp;gt;. Zde se doporučuje, aby si každé vlákno inicializovalo svou instanci &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt;. &amp;lt;ref name=&amp;quot;skeet&amp;quot;&amp;gt;SKEET, Jon. &amp;lt;i&amp;gt;Random numbers&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://csharpindepth.com/articles/Random&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
Pro jazyk Java lze využít hned dvě různé funkce &amp;lt;code&amp;gt;Random()&amp;lt;/code&amp;gt;, každá z jiné knihovny. První je z knihovny &amp;lt;code&amp;gt;java.lang.Math&amp;lt;/code&amp;gt; a druhá z &amp;lt;code&amp;gt;java.util.Random&amp;lt;/code&amp;gt;.&lt;br /&gt;
Při použití &amp;lt;code&amp;gt;Math.random()&amp;lt;/code&amp;gt; dostáváme hodnoty v rozsahu 0 až 1. Můžeme tedy dostat číslo například 0.42589632565639872. Pochopitelně zapojením této funkce s dalším upravujícím kódem lze funkci přizpůsobit, aby vracela čísla v jiném rozsahu.&lt;br /&gt;
Třída &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; jakožto druhá varianta pak umí vracet více typů jako &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; či &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt;. Tato třída generuje náhodná čísla pomocí lineárního kongruentního generátoru (viz kapitola Lineární kongruentní generátor). Generování je tedy velmi rychlé, ale nelze využít na jiné bezpečnostní či identifikační účely.&amp;lt;ref name=&amp;quot;thompson&amp;quot;&amp;gt;THOMPSON, John. &amp;lt;i&amp;gt;Random Number Generation in Java - DZone Java&amp;lt;/i&amp;gt; [online]. 2017 [cit. 2019-05-29] Dostupné z: https://dzone.com/articles/random-number-generation-in-java&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Závěr=&lt;br /&gt;
Generátory pseudonáhodných čísel jsou nepostradatelnou součástí programovacích jazyků, simulačních prostředí a dalších softwarů. Oproti generátorům skutečně náhodných čísel mají své výhody jako rychlost a opakovatelnost v místech, kde si to přejeme, ale na druhou stranu trpí nedostatkem náhodnosti, protože posloupnost získávaných čísel se může v jistém bodě znovu opakovat. Proto se nehodí pro bezpečnost či hazard. Vždy bychom si proto měli být vědomi, který typ generátoru používáme, jak rychle potřebujeme čísla dostávat a jak moc nám záleží na nevyzpytatelnosti generovaných čísel.&lt;br /&gt;
&lt;br /&gt;
=Citace=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18028</id>
		<title>Pseudorandom number generators/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18028"/>
		<updated>2019-05-29T18:02:49Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Formátování textu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Úvod=&lt;br /&gt;
Programátoři i lidé, využívající v počítačových technologiích náhodná čísla, se často domnívají, že jsou náhodná generovaná čísla opravdu zcela náhodná, anebo nad tím ani příliš nepřemýšlí a prostě se na náhodnost spoléhají. Nicméně v IT světě není nic zcela náhodného. Ať už jsou vstupy do systému jistým způsobem předpověditelné dle statistických údajů (například díky dlouhodobému měření), i u náhodnosti postupuje počítač dle nějakého algoritmu. Dokonce i člověk, pokud má dát nějaké zcela náhodné číslo, lze jeho číslo pomocí tzv. Benfordova zákona očekávat v určitém formátu. Bavíme se tedy ještě o světě náhodnosti nebo o propracovaných algoritmech, které se tak pouze tváří a které si v běžném životě ani neuvědomujeme?&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná čísla==&lt;br /&gt;
Vzhledem k tomu, že generovaná čísla skutečně nejsou naprosto náhodná, označují se tato čísla jako pseudonáhodná. Pokud bychom se chtěli opravdu více přiblížit náhodě, můžeme sáhnout po přírodních zákonech a nechat si pomoci. Své o tom ví i HotBits (viz Fyzikální generátory náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná nebo náhodná čísla?==&lt;br /&gt;
Může vyvstat otázka, zda je lepší sada čistě náhodných čísel nebo pseudonáhodných čísel. Náhodná čísla například generovaná člověkem nebo přírodou mohou být nevhodná vzhledem k tomu, že některá čísla se opakují vícekrát a jiné méněkrát. Náhodnost může být ovlivněna tím, že člověk X ve výčtu od 1 do 100 preferuje častěji spíše čísla pod 50 a čísla nad 50 se vyskytují méně. Je zde ovšem porušena 100% náhodnost neboť každé číslo z výběru nemá naprosto stejnou pravděpodobnost výběru jako ostatní čísla. Taktéž výběr nevhodného přírodního jevu může způsobit, že některá čísla se vyskytují méně. V potaz můžeme vzít například šum pozadí. Jenže i šum existuje v různých barvách a tudíž se opět dostávají ke slovu některé hodnoty více než jiné.&lt;br /&gt;
V pseudonáhodných posloupnostech je hlídáno, aby bylo rozdělení náhodné veličiny opravdu pseudonáhodné s výskytem rovnoměrným dle vybrané pravděpodobnostní funkce. Generování poté už není zcela náhodné, ale rozdělení hodnot se tak tváří. Vybráním vhodné pravděpodobnostní funkce můžeme pravděpodobnost čísel ovlivnit, avšak o zbytek se stará už generátor.&lt;br /&gt;
U skutečně náhodných čísel může být také problém v jejich pomalejším získávání, zatímco generátor pseudonáhodných čísel plní pouze funkce algoritmů a může tak dodat kvanta náhodných hodnot během malé chvíle. Tam, kde tedy nezáleží příliš na náhodnosti, kde je potřeba spousta náhodných čísel během chvilky a kde je potřeba občas danou posloupnost hodnot zopakovat, se může více hodit posloupnost pseudonáhodných čísel. V oblastech hazardu či kryptografie, kde je naopak nežádoucí opakování posloupností, je naopak spíše žádán generátor skutečně náhodných čísel generovaných různými fyzikálními jevy.&lt;br /&gt;
Ku příkladu je jasné, že by lidé sázející ve sportce neměli důvěru v losovaná čísla, pokud by byla vylosována algoritmem. A problém by nevyvstal pouze v nedůvěře. Chytří lidé by si čísla zapisovali tak dlouho, dokud by nenašli řád mezi losovanými čísly a tím by mohli odhalit algoritmus, což si nepřeje ani sázková kancelář. Točení míčků je tedy sice také dáno algoritmem fyzikálním (tření, gravitace, spin, akce a reakce a další), ovšem počáteční seed je vždy náhodný, moment vytažení také, a tak je výsledek pokaždé jiný.&lt;br /&gt;
&lt;br /&gt;
=Fyzikální generátory náhodných čísel=&lt;br /&gt;
Fyzikální generátory jsou založeny na fyzikálních jevech, produkující nějaký šum. Ať už se jedná o atmosférický šum či využití fotoelektrického jevu. V následujících podkapitolách si ukážeme praktické příklady generátorů náhodných čísel TRNG (True Random Number Generator – Pravý generátor náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==HotBits==&lt;br /&gt;
Jednou z firem, získávající data tímto způsobem je švýcarská HotBits jenž generuje posloupnost pseudonáhodných bajtů na základě generátoru, který se řídí radioaktivním rozpadem částic, detekovaných v Geiger-Müllerové trubici propojené s počítačem. V tomto případě byl tedy generátor pseudonáhodných čísel nahrazen přírodním algoritmem. &amp;lt;ref name=&amp;quot;walker&amp;quot;&amp;gt;WALKER, John. &amp;lt;i&amp;gt;HotBits: Genuine Random Numbers&amp;lt;/i&amp;gt; [online]. 1996 [cit. 2019-05-29]. Dostupné z: http://www.fourmilab.ch/hotbits/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RADOM.ORG==&lt;br /&gt;
Další online službou je RANDOM.ORG, která získává náhodná čísla díky atmosférickému šumu. Je ale zapotřebí si hlídat nežádoucí šum, jako například ventilátor z počítače, který šum může ovlivnit a zanášet do něj svůj šum. Problém je pochopitelně v tom, že ventilátor produkuje pravidelný šum, který může náhodnost šumu snížit. RANDOM.ORG samozřejmě využívá faktu, že nikdo nezná rozpoložení a pohyb všech molekul vzduchu na planetě, proto se ani generovaná čísla nedají odhadnout. Místy navíc může zuřit nevyzpytatelná bouřka, což může šum také ovlivnit.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Silicon Graphics==&lt;br /&gt;
Jedná se o amerického výrobce počítačového hardwaru, který přišel s tzv. lavarand generátorem. Jeho principem je snímkování lávové lampy, v níž se volně a náhodně pohybuje materiál. Ten je snímkován jako vzor a z těchto snímků pak generátor vytváří posloupnosti náhodných dat. Protože pohyb materiálu je náhodný, jsou pak i čísla zcela náhodná.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generátor na základě lidského vstupu==&lt;br /&gt;
Existují také generátory, které generují náhodná čísla z pohybu PC myši či z intervalů mezi jednotlivými stisky kláves na klávesnici. Zde ovšem vyvstává problém v tom, že operační systém načítá rychlé stisky kláves do bufferu a odesílá po více znacích najednou. To samozřejmě ovlivňuje náhodnost dat. &amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generování čísel míčky==&lt;br /&gt;
Tento generátor se využívá konkrétně v Sazce. Protože se zde hraje o vysoké peněžní částky, je pochopitelné, že čísla nejsou generována generátorem pseudonáhodných čísel. Přestože můžeme říci, že jsou do procesu výběru zapojeny fyzikální algoritmy (přitažlivá síla na základě hmotnosti míčků, třecí síla, zákon akce a reakce při odrazech a další), je výsledek těchto algoritmů tak složitý, jako louskání některých klíčů či komunikace v oboru kryptografie.&lt;br /&gt;
Generování probíhá tak, že je notářem vybrána jedena z osmi sad míčků. Míčky jsou následně zkontrolovány, zda není některý z nich poškozený, zda jsou všechny čisté a zda nejsou poškozeny štítky s čísly, které musí být 100% čitelné. Dále je provedena kontrola losování, aby bylo jisté, že vše funguje bezchybně a nenastane během losování žádná chyba. Teprve pak je spuštěno losování neboli generování náhodných čísel (u Sazky v rozmezí 1-80 včetně). Je zřejmé že v Sazce generátor určí, komu připadne obrovská suma peněz, proto je celý proces generování možná jedním z nejostřeji nejsledovanějších, ať už notáři, techniky, ale i veřejností.&amp;lt;ref name=&amp;quot;krejci&amp;quot;&amp;gt;KREJČÍ, Ondřej. &amp;lt;i&amp;gt;Průběh losování loterií v Sazce odhalen | Vyhraj.com&amp;lt;/i&amp;gt; [online]. 2016 [cit. 2019-05-29] Dostupné z: https://vyhraj.com/jak-probiha-losovani/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generátory pseudonáhodných čísel v praxi=&lt;br /&gt;
Tyto generátory nachází své uplatnění v místech, kde jistá pravidelnost není na obtíž nebo kde je potřeba se k vygenerované sekvenci dostat vícekrát. Své uplatnění najdou například v přehrávačích hudby, kde je zapnuta funkce náhodného výběru další skladby. Dále pak také v simulacích či modelování.&amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lineární kongruentní generátor=&lt;br /&gt;
Lineární kongruentní generátor je jedním z nejstarších a dle (Dorda, nedatováno) také nejrozšířenější z generátorů pseudonáhodných čísel. Každý další prvek je spočítán pomocí funkce &amp;lt;math&amp;gt;x_{n+1}=(l\times x_n+m)\bmod{M}&amp;lt;/math&amp;gt;, přičemž &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; je horní mez velikosti prvků, která má funkci modulo neboli zbytek po dělení číslem &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Pokud je například &amp;lt;math&amp;gt;M=10&amp;lt;/math&amp;gt;, pak nejvyšší náhodné číslo bude 9.&lt;br /&gt;
Pokud kupříkladu zvolíme &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; rovno 27, &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; rovno 5, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; rovno 9 a první prvek (seed) zvolíme 8, pak další čísla dle výše uvedeného vztahu budou 22, 11, 10, 5, 7, 17 atd. U 19. prvku ovšem dostáváme opět 8, 22, 11 a řada se celá opakuje. Nevhodnou volbou parametrů se může stát, že bude opakování častější.&lt;br /&gt;
UNIXová funkce rand() (viz Generátory programovacích jazyků) používá tento generátor také a to s parametry &amp;lt;math&amp;gt;l=1103515245&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m=12345&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;M=2^{32}&amp;lt;/math&amp;gt;. &amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Pro počítače IBM byl zase generátor &amp;lt;math&amp;gt;x_{n+1}=(65539\times x_n) \bmod{2^{31}}&amp;lt;/math&amp;gt;.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fibonacciho generátor==&lt;br /&gt;
Fibonacciho generátor se odvíjí od Fibonacciho posloupnosti, kde každý další prvek je součtem předchozích dvou. Posloupnost začíná při počátku v 1 jako 1, 2, 3, 5, 8, 13, 21 atd. Pokud přidáme jako u předchozího generátoru opět &amp;lt;math&amp;gt;\bmod{M}&amp;lt;/math&amp;gt;, omezíme získaná čísla zase na celočíselné zbytky po dělení &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; a tím stanovíme horní mez pro získané hodnoty. Podobně založen byl Millerův a Prenticův generátor, který byl definován vzorcem &amp;lt;math&amp;gt;x_{n+1}=(x_{n-2}+x_{n-3})\bmod{3137}&amp;lt;/math&amp;gt;, jenž má periodu po 9843907 prvcích.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mersenne Twister==&lt;br /&gt;
Algoritmus Mersenne Twister (také jako MT19937) je nejen velmi rychlý, ale má i velkou periodu (počet čísel, po které se začne řada opakovat) &amp;lt;math&amp;gt;2^{19937}-1&amp;lt;/math&amp;gt;. Je dokonce rychlejší než lineárně kongruentní generátor, ovšem je mnohem náročnější na paměť. Díky své rychlosti a velké periodicitě se výborně hodí pro různé simulace.&amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
Stojí za zmínku, že tento algoritmus je mimo jiné také využit ke generování náhodných čísel pro funkci &amp;lt;code&amp;gt;RAND&amp;lt;/code&amp;gt; (česky &amp;lt;code&amp;gt;NÁHČÍSLO&amp;lt;/code&amp;gt;), a to konkrétně v Officech 2010 &amp;lt;ref name=&amp;quot;microsoft&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;RAND function - Office Support&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://support.office.com/en-us/article/rand-function-4cbfa695-8869-4788-8d90-021ea9f5be73&amp;lt;/ref&amp;gt;, a pak je také tento generátor využit v Simulačním softwaru NetLogo, kde je také použit ke generování ve funkci &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; &amp;lt;ref name=&amp;quot;nazev&amp;quot;&amp;gt;WILENSKY, Uri. &amp;lt;i&amp;gt;NetLogo Models Library: Random Basic&amp;lt;/i&amp;gt; [online]. 2004 [cit. 2019-05-29] Dostupné z: https://ccl.northwestern.edu/netlogo/models/RandomBasic&amp;lt;/ref&amp;gt;. MT19937 je využit v mnohých softwarech od MS Office až po různé simulační programy a v neposlední řadě také v mnoha programovacích jazycích.&lt;br /&gt;
&lt;br /&gt;
==Complimentary-multiply-with-carry==&lt;br /&gt;
Jedná se o alternativu k algoritmu Mersenne Twister, který má ještě větší periodu &amp;lt;math&amp;gt;2^{131086}&amp;lt;/math&amp;gt; a je ještě rychlejší, ale opět paměťově ještě náročnější. &amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MS Excel generátor pseudonáhodných čísel==&lt;br /&gt;
[[File:Excel generator.PNG|thumb|left|Náhled možností generátoru v MS Excel]]&lt;br /&gt;
[[File:RovnomerneRozdeleni1.PNG|thumb|right|První graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni2.PNG|thumb|right|Druhý graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
[[File:RovnomerneRozdeleni3.PNG|thumb|right|Třetí graf rovnoměrného rozdělení hodnot od 1 do 100]]&lt;br /&gt;
MS Excel obsahuje v sobě zabudovaný též generátor pseudonáhodných čísel. Jak bylo zmíněno výše (viz  Mersenne Twister), pracuje na principu MT19937, což znamená, že jeho periodicita je po 2^19937-1 prvcích. Najdeme jej pod kartou Data a následně Analýza dat. Jedná se o doplněk, který musí být dodatečně dodán. Po kliknutí vybereme Generátor pseudonáhodných čísel. Následné okno je přizpůsobeno podle volby Typu rozložení. Co je ale společné, je počet proměnných (udává počet generovaných sloupců) a počet náhodných čísel (počet generovaných řádků). Pokud se pokusíme o rovnoměrné rozdělení, můžeme se podívat, jak tyto generátory fungují. Pro názornost byly vybrány 3 sloupce po 1000 čísel od 1 do 1000. Obrázky na pravé straně zachycují histogram z určitých intervalů. Můžeme vidět, že se algoritmus opravdu snaží o rovnoměrné rozmístění náhodných čísel. Jen tak pro zajímavost, směrodatné odchylky jsou pro první graf 28.72, pro druhý 28.08 a pro třetí 28.94. Vidíme tedy že algoritmus se opravdu držel nízké odchylky, přičemž ve druhé posloupnosti se mu to dařilo nejlépe a v poslední nejhůře. U třetího totiž upřednostňoval více čísla z inervalu 1-11.&lt;br /&gt;
Pokud vyzkoušíme generátor například Normálního rozdělení, algoritmus opět hlídá rovnoměrnost dle nastavených parametrů. Opět ale každá řada vychází jinak.&lt;br /&gt;
Narážíme zde na zmíněnou výhodu a nevýhodu zároveň, a sice opakovatelnost pseudonáhodných posloupností. Ať se mohou vygenerovaná čísla jevit jakkoliv náhodná, byla vypočítána algoritmem. Klíčové políčko je v nastavení generátoru Základ generátoru (neboli seed). Pokud vygenerujeme posloupnost např. 1000 čísel od 1 do 100 a zadáme základ například 3, při každém dalším pokusu se stejnými parametry a hlavně základem dostáváme opět tutéž samou posloupnost čísel. To je v různých oborech žádoucí a v jiných nikoliv.&lt;br /&gt;
&lt;br /&gt;
==Kryptografie==&lt;br /&gt;
Náhodná čísla se uplatňují také v oboru kryptografie, ať už se jedná o elektronické podpisy nebo šifrování dat. Ku příkladu můžeme uvést RSA generátor, který je používán pro generování bezpečné RSA šifry. Pro RSA šifru je potřeba vygenerovat dle předepsaného algoritmu klíč veřejný a privátní. Zjištění privátního klíče není nemožné, ovšem zabere tolik času, že jsou data již neaktuální.&amp;lt;ref name=&amp;quot;serf&amp;quot;&amp;gt;ŠERF, Robert. &amp;lt;i&amp;gt;Generátory pseudonáhodných čísel a jejich implementace v (kryptografických) knihovnách a kryptografických protokolech&amp;lt;/i&amp;gt; [online]. 2006 [cit. 2019-05-29] Dostupné z: https://is.muni.cz/th/bg71g/bc.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
Posuneme-li se dále, bude nás zajímat, co vše musí generátor pseudonáhodných čísel v kryptografii splňovat. Je zřejmé, že kryptografie je citlivý obor, kde budou kladeny vyšší nároky na generátor pseudonáhodných čísel.&lt;br /&gt;
	Čísla musí být pseudonáhodná, což znamená, že nelze v relativně blízké době s pravděpodobností větší než 50 % zjistit další číslo.&lt;br /&gt;
	I za předpokladu, že uniknou data o stavu generátoru nesmí být snadné opět zjistit již vygenerovanou sekvenci. Této podmínce říkáme dopředná bezpečnost.&lt;br /&gt;
	Pokud se útočník dostane k datům generátoru a zná tak jeho současný stav, i přesto by neměl být schopen generovat stejná čísla jako generátor. Této podmínce se říká zpětná bezpečnost a můžeme jí docílit například pravidelným přidáváním entropie do současného stavu.&lt;br /&gt;
&lt;br /&gt;
==Generátory programovacích jazyků==&lt;br /&gt;
===C===&lt;br /&gt;
Pro linuxový jazyk C je pro práci s pseudonáhodnými čísly použita funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; a &amp;lt;code&amp;gt;srand()&amp;lt;/code&amp;gt; ze standardní funkce &amp;lt;code&amp;gt;&amp;lt;stdlib.h&amp;gt;&amp;lt;/code&amp;gt;. Funkce &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; vrací náhodné číslo od 0 do &amp;lt;code&amp;gt;RAND_MAX&amp;lt;/code&amp;gt;, funkce &amp;lt;code&amp;gt;srand&amp;lt;/code&amp;gt; čísla nevrací, ale poskytuje možnost zadání seed neboli počátku (pro případ, že budeme chtít posloupnost zopakovat) pro funkci &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt;. Bohužel se tyto funkce ukázaly jako špatná volba pro dostatečnou náhodnost generovaných čísel. Proto nejsou vhodné k použití, kde je potřeba dobrá náhoda čísel, jako například v kryptografii. &amp;lt;ref name=&amp;quot;linux&amp;quot;&amp;gt;linux.die.net &amp;lt;i&amp;gt;rand(3): pseudo-random number generator - Linux man page&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://linux.die.net/man/3/rand&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===C#===&lt;br /&gt;
Ve světě C# existuje třída pro práci s pseudonáhodnými čísly &amp;lt;code&amp;gt;System.Random&amp;lt;/code&amp;gt;. Tato třída se inicializuje formou semínka seed (pokud není zadáno, použije se aktuální datum a čas). Dále pak obsahuje funkce &amp;lt;code&amp;gt;Next()&amp;lt;/code&amp;gt;, která vrátí další pseudonáhodné číslo, &amp;lt;code&amp;gt;Next(Int32)&amp;lt;/code&amp;gt;, vracející pseudonáhodná čísla menší než zadaný parametr a nakonec &amp;lt;code&amp;gt;Next(Int32,Int32)&amp;lt;/code&amp;gt; vracející čísla větší než první argument a menší než druhý argument. Generátor v jazyce C# se zdá být mnohem lepší než pro jazyk C, ovšem problém nastává ve chvíli, kdy ve stejném cyklu pokaždé inicializujeme Random a následně vygenerujeme další číslo. Protože cykly probíhají standardně velmi rychle, je semínko většinu cyklů stejné, a tak se může stát, že dostaneme více stejných čísel. Tomu se pochopitelně můžeme vyhnout tím, že &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; inicializujeme pouze jednou. Další problém nastává, pokud používáme více vláken &amp;lt;code&amp;gt;Thread&amp;lt;/code&amp;gt;. Zde se doporučuje, aby si každé vlákno inicializovalo svou instanci &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt;. &amp;lt;ref name=&amp;quot;skeet&amp;quot;&amp;gt;SKEET, Jon. &amp;lt;i&amp;gt;Random numbers&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://csharpindepth.com/articles/Random&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
Pro jazyk Java lze využít hned dvě různé funkce &amp;lt;code&amp;gt;Random()&amp;lt;/code&amp;gt;, každá z jiné knihovny. První je z knihovny &amp;lt;code&amp;gt;java.lang.Math&amp;lt;/code&amp;gt; a druhá z &amp;lt;code&amp;gt;java.util.Random&amp;lt;/code&amp;gt;.&lt;br /&gt;
Při použití &amp;lt;code&amp;gt;Math.random()&amp;lt;/code&amp;gt; dostáváme hodnoty v rozsahu 0 až 1. Můžeme tedy dostat číslo například 0.42589632565639872. Pochopitelně zapojením této funkce s dalším upravujícím kódem lze funkci přizpůsobit, aby vracela čísla v jiném rozsahu.&lt;br /&gt;
Třída &amp;lt;code&amp;gt;Random&amp;lt;/code&amp;gt; jakožto druhá varianta pak umí vracet více typů jako &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; či &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt;. Tato třída generuje náhodná čísla pomocí lineárního kongruentního generátoru (viz kapitola Lineární kongruentní generátor). Generování je tedy velmi rychlé, ale nelze využít na jiné bezpečnostní či identifikační účely.&amp;lt;ref name=&amp;quot;thompson&amp;quot;&amp;gt;THOMPSON, John. &amp;lt;i&amp;gt;Random Number Generation in Java - DZone Java&amp;lt;/i&amp;gt; [online]. 2017 [cit. 2019-05-29] Dostupné z: https://dzone.com/articles/random-number-generation-in-java&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Závěr=&lt;br /&gt;
Generátory pseudonáhodných čísel jsou nepostradatelnou součástí programovacích jazyků, simulačních prostředí a dalších softwarů. Oproti generátorům skutečně náhodných čísel mají své výhody jako rychlost a opakovatelnost v místech, kde si to přejeme, ale na druhou stranu trpí nedostatkem náhodnosti, protože posloupnost získávaných čísel se může v jistém bodě znovu opakovat. Proto se nehodí pro bezpečnost či hazard. Vždy bychom si proto měli být vědomi, který typ generátoru používáme, jak rychle potřebujeme čísla dostávat a jak moc nám záleží na nevyzpytatelnosti generovaných čísel.&lt;br /&gt;
&lt;br /&gt;
=Citace=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni3.PNG&amp;diff=18027</id>
		<title>File:RovnomerneRozdeleni3.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni3.PNG&amp;diff=18027"/>
		<updated>2019-05-29T17:10:21Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni2.PNG&amp;diff=18026</id>
		<title>File:RovnomerneRozdeleni2.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni2.PNG&amp;diff=18026"/>
		<updated>2019-05-29T17:09:51Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni1.PNG&amp;diff=18025</id>
		<title>File:RovnomerneRozdeleni1.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:RovnomerneRozdeleni1.PNG&amp;diff=18025"/>
		<updated>2019-05-29T17:09:09Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Graf náhodného rovnoměrného rozdělení v MS Excel&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=File:Excel_generator.PNG&amp;diff=18024</id>
		<title>File:Excel generator.PNG</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=File:Excel_generator.PNG&amp;diff=18024"/>
		<updated>2019-05-29T17:06:20Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Náhled možností generátoru v MS Excel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Náhled možností generátoru v MS Excel&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18023</id>
		<title>Pseudorandom number generators/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18023"/>
		<updated>2019-05-29T16:57:25Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Doplnění citací&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Úvod=&lt;br /&gt;
Programátoři i lidé, využívající v počítačových technologiích náhodná čísla, se často domnívají, že jsou náhodná generovaná čísla opravdu zcela náhodná, anebo nad tím ani příliš nepřemýšlí a prostě se na náhodnost spoléhají. Nicméně v IT světě není nic zcela náhodného. Ať už jsou vstupy do systému jistým způsobem předpověditelné dle statistických údajů (například díky dlouhodobému měření), i u náhodnosti postupuje počítač dle nějakého algoritmu. Dokonce i člověk, pokud má dát nějaké zcela náhodné číslo, lze jeho číslo pomocí tzv. Benfordova zákona očekávat v určitém formátu. Bavíme se tedy ještě o světě náhodnosti nebo o propracovaných algoritmech, které se tak pouze tváří a které si v běžném životě ani neuvědomujeme?&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná čísla==&lt;br /&gt;
Vzhledem k tomu, že generovaná čísla skutečně nejsou naprosto náhodná, označují se tato čísla jako pseudonáhodná. Pokud bychom se chtěli opravdu více přiblížit náhodě, můžeme sáhnout po přírodních zákonech a nechat si pomoci. Své o tom ví i HotBits (viz Fyzikální generátory náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná nebo náhodná čísla?==&lt;br /&gt;
Může vyvstat otázka, zda je lepší sada čistě náhodných čísel nebo pseudonáhodných čísel. Náhodná čísla například generovaná člověkem nebo přírodou mohou být nevhodná vzhledem k tomu, že některá čísla se opakují vícekrát a jiné méněkrát. Náhodnost může být ovlivněna tím, že člověk X ve výčtu od 1 do 100 preferuje častěji spíše čísla pod 50 a čísla nad 50 se vyskytují méně. Je zde ovšem porušena 100% náhodnost neboť každé číslo z výběru nemá naprosto stejnou pravděpodobnost výběru jako ostatní čísla. Taktéž výběr nevhodného přírodního jevu může způsobit, že některá čísla se vyskytují méně. V potaz můžeme vzít například šum pozadí. Jenže i šum existuje v různých barvách a tudíž se opět dostávají ke slovu některé hodnoty více než jiné.&lt;br /&gt;
V pseudonáhodných posloupnostech je hlídáno, aby bylo rozdělení náhodné veličiny opravdu pseudonáhodné s výskytem rovnoměrným dle vybrané pravděpodobnostní funkce. Generování poté už není zcela náhodné, ale rozdělení hodnot se tak tváří. Vybráním vhodné pravděpodobnostní funkce můžeme pravděpodobnost čísel ovlivnit, avšak o zbytek se stará už generátor.&lt;br /&gt;
U skutečně náhodných čísel může být také problém v jejich pomalejším získávání, zatímco generátor pseudonáhodných čísel plní pouze funkce algoritmů a může tak dodat kvanta náhodných hodnot během malé chvíle. Tam, kde tedy nezáleží příliš na náhodnosti, kde je potřeba spousta náhodných čísel během chvilky a kde je potřeba občas danou posloupnost hodnot zopakovat, se může více hodit posloupnost pseudonáhodných čísel. V oblastech hazardu či kryptografie, kde je naopak nežádoucí opakování posloupností, je naopak spíše žádán generátor skutečně náhodných čísel generovaných různými fyzikálními jevy.&lt;br /&gt;
Ku příkladu je jasné, že by lidé sázející ve sportce neměli důvěru v losovaná čísla, pokud by byla vylosována algoritmem. A problém by nevyvstal pouze v nedůvěře. Chytří lidé by si čísla zapisovali tak dlouho, dokud by nenašli řád mezi losovanými čísly a tím by mohli odhalit algoritmus, což si nepřeje ani sázková kancelář. Točení míčků je tedy sice také dáno algoritmem fyzikálním (tření, gravitace, spin, akce a reakce a další), ovšem počáteční seed je vždy náhodný, moment vytažení také, a tak je výsledek pokaždé jiný.&lt;br /&gt;
&lt;br /&gt;
=Fyzikální generátory náhodných čísel=&lt;br /&gt;
Fyzikální generátory jsou založeny na fyzikálních jevech, produkující nějaký šum. Ať už se jedná o atmosférický šum či využití fotoelektrického jevu. V následujících podkapitolách si ukážeme praktické příklady generátorů náhodných čísel TRNG (True Random Number Generator – Pravý generátor náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==HotBits==&lt;br /&gt;
Jednou z firem, získávající data tímto způsobem je švýcarská HotBits jenž generuje posloupnost pseudonáhodných bajtů na základě generátoru, který se řídí radioaktivním rozpadem částic, detekovaných v Geiger-Müllerové trubici propojené s počítačem. V tomto případě byl tedy generátor pseudonáhodných čísel nahrazen přírodním algoritmem. &amp;lt;ref name=&amp;quot;walker&amp;quot;&amp;gt;WALKER, John. &amp;lt;i&amp;gt;HotBits: Genuine Random Numbers&amp;lt;/i&amp;gt; [online]. 1996 [cit. 2019-05-29]. Dostupné z: http://www.fourmilab.ch/hotbits/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RADOM.ORG==&lt;br /&gt;
Další online službou je RANDOM.ORG, která získává náhodná čísla díky atmosférickému šumu. Je ale zapotřebí si hlídat nežádoucí šum, jako například ventilátor z počítače, který šum může ovlivnit a zanášet do něj svůj šum. Problém je pochopitelně v tom, že ventilátor produkuje pravidelný šum, který může náhodnost šumu snížit. RANDOM.ORG samozřejmě využívá faktu, že nikdo nezná rozpoložení a pohyb všech molekul vzduchu na planetě, proto se ani generovaná čísla nedají odhadnout. Místy navíc může zuřit nevyzpytatelná bouřka, což může šum také ovlivnit.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Silicon Graphics==&lt;br /&gt;
Jedná se o amerického výrobce počítačového hardwaru, který přišel s tzv. lavarand generátorem. Jeho principem je snímkování lávové lampy, v níž se volně a náhodně pohybuje materiál. Ten je snímkován jako vzor a z těchto snímků pak generátor vytváří posloupnosti náhodných dat. Protože pohyb materiálu je náhodný, jsou pak i čísla zcela náhodná.&amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generátor na základě lidského vstupu==&lt;br /&gt;
Existují také generátory, které generují náhodná čísla z pohybu PC myši či z intervalů mezi jednotlivými stisky kláves na klávesnici. Zde ovšem vyvstává problém v tom, že operační systém načítá rychlé stisky kláves do bufferu a odesílá po více znacích najednou. To samozřejmě ovlivňuje náhodnost dat. &amp;lt;ref name=&amp;quot;random&amp;quot;&amp;gt;HAAHR, Mads. &amp;lt;i&amp;gt;RANDOM.ORG - Introduction to Randomness and Random Numbers&amp;lt;/i&amp;gt; [online]. ©1998-2019 [cit. 2019-05-29] Dostupné z: https://www.random.org/randomness/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generování čísel míčky==&lt;br /&gt;
Tento generátor se využívá konkrétně v Sazce. Protože se zde hraje o vysoké peněžní částky, je pochopitelné, že čísla nejsou generována generátorem pseudonáhodných čísel. Přestože můžeme říci, že jsou do procesu výběru zapojeny fyzikální algoritmy (přitažlivá síla na základě hmotnosti míčků, třecí síla, zákon akce a reakce při odrazech a další), je výsledek těchto algoritmů tak složitý, jako louskání některých klíčů či komunikace v oboru kryptografie.&lt;br /&gt;
Generování probíhá tak, že je notářem vybrána jedena z osmi sad míčků. Míčky jsou následně zkontrolovány, zda není některý z nich poškozený, zda jsou všechny čisté a zda nejsou poškozeny štítky s čísly, které musí být 100% čitelné. Dále je provedena kontrola losování, aby bylo jisté, že vše funguje bezchybně a nenastane během losování žádná chyba. Teprve pak je spuštěno losování neboli generování náhodných čísel (u Sazky v rozmezí 1-80 včetně). Je zřejmé že v Sazce generátor určí, komu připadne obrovská suma peněz, proto je celý proces generování možná jedním z nejostřeji nejsledovanějších, ať už notáři, techniky, ale i veřejností.&amp;lt;ref name=&amp;quot;krejci&amp;quot;&amp;gt;KREJČÍ, Ondřej. &amp;lt;i&amp;gt;Průběh losování loterií v Sazce odhalen | Vyhraj.com&amp;lt;/i&amp;gt; [online]. 2016 [cit. 2019-05-29] Dostupné z: https://vyhraj.com/jak-probiha-losovani/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Generátory pseudonáhodných čísel v praxi=&lt;br /&gt;
Tyto generátory nachází své uplatnění v místech, kde jistá pravidelnost není na obtíž nebo kde je potřeba se k vygenerované sekvenci dostat vícekrát. Své uplatnění najdou například v přehrávačích hudby, kde je zapnuta funkce náhodného výběru další skladby. Dále pak také v simulacích či modelování.&amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Lineární kongruentní generátor=&lt;br /&gt;
Lineární kongruentní generátor je jedním z nejstarších a dle (Dorda, nedatováno) také nejrozšířenější z generátorů pseudonáhodných čísel. Každý další prvek je spočítán pomocí funkce x_(n+1)=(l∙x_n+m) mod M, přičemž M je horní mez velikosti prvků, která má funkci modulo neboli zbytek po dělení číslem M. Pokud je například M=10, pak nejvyšší náhodné číslo bude 9.&lt;br /&gt;
Pokud kupříkladu zvolíme M rovno 27, l rovno 5, m rovno 9 a první prvek (seed) zvolíme 8, pak další čísla dle výše uvedeného vztahu budou 22, 11, 10, 5, 7, 17 atd. U 19. prvku ovšem dostáváme opět 8, 22, 11 a řada se celá opakuje. Nevhodnou volbou parametrů se může stát, že bude opakování častější.&lt;br /&gt;
UNIXová funkce rand() (viz Generátory programovacích jazyků) používá tento generátor také a to s parametry l=1103515245, m=12345 a M=2^32. &amp;lt;ref name=&amp;quot;bashar&amp;quot;&amp;gt;BASHAR. &amp;lt;i&amp;gt;Náhodné jevy&amp;lt;/i&amp;gt; [online]. 2001 [cit. 2019-05-29] Dostupné z: http://www.karlin.mff.cuni.cz/~holub/soubory/qc/node26.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Pro počítače IBM byl zase generátor x_(n+1)=65539∙x_n (mod 2^31 ).&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fibonacciho generátor==&lt;br /&gt;
Fibonacciho generátor se odvíjí od Fibonacciho posloupnosti, kde každý další prvek je součtem předchozích dvou. Posloupnost začíná při počátku v 1 jako 1, 2, 3, 5, 8, 13, 21 atd. Pokud přidáme jako u předchozího generátoru opět mod M, omezíme získaná čísla zase na celočíselné zbytky po dělení M a tím stanovíme horní mez pro získané hodnoty. Podobně založen byl Millerův a Prenticův generátor, který byl definován vzorcem x_(n+1)=x_(n-2)+x_(n-3) (mod 3137), jenž má periodu po 9 843 907 prvcích.&amp;lt;ref name=&amp;quot;dorda&amp;quot;&amp;gt;DORDA, Michal. &amp;lt;i&amp;gt;strGenerování pseudonáhodnýchanka&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: http://homel.vsb.cz/~dor028/Aplikace_4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mersenne Twister==&lt;br /&gt;
Algoritmus Mersenne Twister (také jako MT19937) je nejen velmi rychlý, ale má i velkou periodu (počet čísel, po které se začne řada opakovat) 2^19937-1. Je dokonce rychlejší než lineárně kongruentní generátor, ovšem je mnohem náročnější na paměť. Díky své rychlosti a velké periodicitě se výborně hodí pro různé simulace.&amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
Stojí za zmínku, že tento algoritmus je mimo jiné také využit ke generování náhodných čísel pro funkci RAND (česky NÁHČÍSLO), a to konkrétně v Officech 2010 &amp;lt;ref name=&amp;quot;microsoft&amp;quot;&amp;gt;Microsoft.com &amp;lt;i&amp;gt;RAND function - Office Support&amp;lt;/i&amp;gt; [online]. ©2019 [cit. 2019-05-29] Dostupné z: https://support.office.com/en-us/article/rand-function-4cbfa695-8869-4788-8d90-021ea9f5be73&amp;lt;/ref&amp;gt;, a pak je také tento generátor využit v Simulačním softwaru NetLogo, kde je také použit ke generování ve funkci random &amp;lt;ref name=&amp;quot;nazev&amp;quot;&amp;gt;WILENSKY, Uri. &amp;lt;i&amp;gt;NetLogo Models Library: Random Basic&amp;lt;/i&amp;gt; [online]. 2004 [cit. 2019-05-29] Dostupné z: https://ccl.northwestern.edu/netlogo/models/RandomBasic&amp;lt;/ref&amp;gt;. MT19937 je využit v mnohých softwarech od MS Office až po různé simulační programy a v neposlední řadě také v mnoha programovacích jazycích.&lt;br /&gt;
&lt;br /&gt;
==Complimentary-multiply-with-carry==&lt;br /&gt;
Jedná se o alternativu k algoritmu Mersenne Twister, který má ještě větší periodu 2^131086 a je ještě rychlejší, ale opět paměťově ještě náročnější. &amp;lt;ref name=&amp;quot;ifanda&amp;quot;&amp;gt;ifanda.cz &amp;lt;i&amp;gt;Knihovna pro generování pseudonáhodných čísel&amp;lt;/i&amp;gt; [online]. 2011 [cit. 2019-05-29] Dostupné z: http://ifanda.cz/it/cpp/2011-05-09-knihovna-pro-generovani-pseudonahodnych-cisel/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MS Excel generátor pseudonáhodných čísel==&lt;br /&gt;
MS Excel obsahuje v sobě zabudovaný též generátor pseudonáhodných čísel. Jak bylo zmíněno výše (viz  Mersenne Twister), pracuje na principu MT19937, což znamená, že jeho periodicita je po 2^19937-1 prvcích. Najdeme jej pod kartou Data a následně Analýza dat. Jedná se o doplněk, který musí být dodatečně dodán. Po kliknutí vybereme Generátor pseudonáhodných čísel. Následné okno je přizpůsobeno podle volby Typu rozložení. Co je ale společné, je počet proměnných (udává počet generovaných sloupců) a počet náhodných čísel (počet generovaných řádků). Pokud se pokusíme o rovnoměrné rozdělení, můžeme se podívat, jak tyto generátory fungují. Pro názornost byly vybrány 3 sloupce po 1000 čísel od 1 do 1000. Obrázky č. 2, 3 a 4 zachycují histogram z určitých intervalů. Můžeme vidět, že se algoritmus opravdu snaží o rovnoměrné rozmístění náhodných čísel. Jen tak pro zajímavost, směrodatné odchylky jsou pro první graf 28.72, pro druhý 28.08 a pro třetí 28.94. Vidíme tedy že algoritmus se opravdu držel nízké odchylky, přičemž ve druhé posloupnosti se mu to dařilo nejlépe a v poslední nejhůře. U třetího totiž upřednostňoval více čísla z inervalu 1-11.&lt;br /&gt;
Pokud vyzkoušíme generátor například Normálního rozdělení, algoritmus opět hlídá rovnoměrnost dle nastavených parametrů. Opět ale každá řada vychází jinak.&lt;br /&gt;
Narážíme zde na zmíněnou výhodu a nevýhodu zároveň, a sice opakovatelnost pseudonáhodných posloupností. Ať se mohou vygenerovaná čísla jevit jakkoliv náhodná, byla vypočítána algoritmem. Klíčové políčko je v nastavení generátoru Základ generátoru (neboli seed). Pokud vygenerujeme posloupnost např. 1000 čísel od 1 do 100 a zadáme základ například 3, při každém dalším pokusu se stejnými parametry a hlavně základem dostáváme opět tutéž samou posloupnost čísel. To je v různých oborech žádoucí a v jiných nikoliv.&lt;br /&gt;
&lt;br /&gt;
==Kryptografie==&lt;br /&gt;
Náhodná čísla se uplatňují také v oboru kryptografie, ať už se jedná o elektronické podpisy nebo šifrování dat. Ku příkladu můžeme uvést RSA generátor, který je používán pro generování bezpečné RSA šifry. Pro RSA šifru je potřeba vygenerovat dle předepsaného algoritmu klíč veřejný a privátní. Zjištění privátního klíče není nemožné, ovšem zabere tolik času, že jsou data již neaktuální.&amp;lt;ref name=&amp;quot;serf&amp;quot;&amp;gt;ŠERF, Robert. &amp;lt;i&amp;gt;Generátory pseudonáhodných čísel a jejich implementace v (kryptografických) knihovnách a kryptografických protokolech&amp;lt;/i&amp;gt; [online]. 2006 [cit. 2019-05-29] Dostupné z: https://is.muni.cz/th/bg71g/bc.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
Posuneme-li se dále, bude nás zajímat, co vše musí generátor pseudonáhodných čísel v kryptografii splňovat. Je zřejmé, že kryptografie je citlivý obor, kde budou kladeny vyšší nároky na generátor pseudonáhodných čísel.&lt;br /&gt;
	Čísla musí být pseudonáhodná, což znamená, že nelze v relativně blízké době s pravděpodobností větší než 50 % zjistit další číslo.&lt;br /&gt;
	I za předpokladu, že uniknou data o stavu generátoru nesmí být snadné opět zjistit již vygenerovanou sekvenci. Této podmínce říkáme dopředná bezpečnost.&lt;br /&gt;
	Pokud se útočník dostane k datům generátoru a zná tak jeho současný stav, i přesto by neměl být schopen generovat stejná čísla jako generátor. Této podmínce se říká zpětná bezpečnost a můžeme jí docílit například pravidelným přidáváním entropie do současného stavu.&lt;br /&gt;
&lt;br /&gt;
==Generátory programovacích jazyků==&lt;br /&gt;
===C===&lt;br /&gt;
Pro linuxový jazyk C je pro práci s pseudonáhodnými čísly použita funkce rand() a srand() ze standardní funkce &amp;lt;stdlib.h&amp;gt;. Funkce rand() vrací náhodné číslo od 0 do RAND_MAX, funkce srand čísla nevrací, ale poskytuje možnost zadání seed neboli počátku (pro případ, že budeme chtít posloupnost zopakovat) pro funkci rand(). Bohužel se tyto funkce ukázaly jako špatná volba pro dostatečnou náhodnost generovaných čísel. Proto nejsou vhodné k použití, kde je potřeba dobrá náhoda čísel, jako například v kryptografii. &amp;lt;ref name=&amp;quot;linux&amp;quot;&amp;gt;linux.die.net &amp;lt;i&amp;gt;rand(3): pseudo-random number generator - Linux man page&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://linux.die.net/man/3/rand&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===C#===&lt;br /&gt;
Ve světě C# existuje třída pro práci s pseudonáhodnými čísly System.Random. Tato třída se inicializuje formou semínka seed (pokud není zadáno, použije se aktuální datum a čas). Dále pak obsahuje funkce Next(), která vrátí další pseudonáhodné číslo, Next(Int32), vracející pseudonáhodná čísla menší než zadaný parametr a nakonec Next(Int32,Int32) vracející čísla větší než první argument a menší než druhý argument. Generátor v jazyce C# se zdá být mnohem lepší než pro jazyk C, ovšem problém nastává ve chvíli, kdy ve stejném cyklu pokaždé inicializujeme Random a následně vygenerujeme další číslo. Protože cykly probíhají standardně velmi rychle, je semínko většinu cyklů stejné, a tak se může stát, že dostaneme více stejných čísel. Tomu se pochopitelně můžeme vyhnout tím, že Random inicializujeme pouze jednou. Další problém nastává, pokud používáme více vláken Thread. Zde se doporučuje, aby si každé vlákno inicializovalo svou instanci Random. &amp;lt;ref name=&amp;quot;skeet&amp;quot;&amp;gt;SKEET, Jon. &amp;lt;i&amp;gt;Random numbers&amp;lt;/i&amp;gt; [online]. nedatováno [cit. 2019-05-29] Dostupné z: https://csharpindepth.com/articles/Random&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
Pro jazyk Java lze využít hned dvě různé funkce Random(), každá z jiné knihovny. První je z knihovny java.lang.Math a druhá z java.util.Random.&lt;br /&gt;
Při použití Math.random() dostáváme hodnoty v rozsahu 0 až 1. Můžeme tedy dostat číslo například 0.42589632565639872. Pochopitelně zapojením této funkce s dalším upravujícím kódem lze funkci přizpůsobit, aby vracela čísla v jiném rozsahu.&lt;br /&gt;
Třída Random jakožto druhá varianta pak umí vracet více typů jako float, double, long či boolean. Tato třída generuje náhodná čísla pomocí lineárního kongruentního generátoru (viz kapitola Lineární kongruentní generátor). Generování je tedy velmi rychlé, ale nelze využít na jiné bezpečnostní či identifikační účely.&amp;lt;ref name=&amp;quot;thompson&amp;quot;&amp;gt;THOMPSON, John. &amp;lt;i&amp;gt;Random Number Generation in Java - DZone Java&amp;lt;/i&amp;gt; [online]. 2017 [cit. 2019-05-29] Dostupné z: https://dzone.com/articles/random-number-generation-in-java&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Závěr=&lt;br /&gt;
Generátory pseudonáhodných čísel jsou nepostradatelnou součástí programovacích jazyků, simulačních prostředí a dalších softwarů. Oproti generátorům skutečně náhodných čísel mají své výhody jako rychlost a opakovatelnost v místech, kde si to přejeme, ale na druhou stranu trpí nedostatkem náhodnosti, protože posloupnost získávaných čísel se může v jistém bodě znovu opakovat. Proto se nehodí pro bezpečnost či hazard. Vždy bychom si proto měli být vědomi, který typ generátoru používáme, jak rychle potřebujeme čísla dostávat a jak moc nám záleží na nevyzpytatelnosti generovaných čísel.&lt;br /&gt;
&lt;br /&gt;
=Citace=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18022</id>
		<title>Pseudorandom number generators/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Pseudorandom_number_generators/cs&amp;diff=18022"/>
		<updated>2019-05-29T15:46:47Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: Created page with &amp;quot;=Úvod= Programátoři i lidé, využívající v počítačových technologiích náhodná čísla, se často domnívají, že jsou náhodná generovaná čísla opravdu zcel...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Úvod=&lt;br /&gt;
Programátoři i lidé, využívající v počítačových technologiích náhodná čísla, se často domnívají, že jsou náhodná generovaná čísla opravdu zcela náhodná, anebo nad tím ani příliš nepřemýšlí a prostě se na náhodnost spoléhají. Nicméně v IT světě není nic zcela náhodného. Ať už jsou vstupy do systému jistým způsobem předpověditelné dle statistických údajů (například díky dlouhodobému měření), i u náhodnosti postupuje počítač dle nějakého algoritmu. Dokonce i člověk, pokud má dát nějaké zcela náhodné číslo, lze jeho číslo pomocí tzv. Benfordova zákona očekávat v určitém formátu. Bavíme se tedy ještě o světě náhodnosti nebo o propracovaných algoritmech, které se tak pouze tváří a které si v běžném životě ani neuvědomujeme?&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná čísla==&lt;br /&gt;
Vzhledem k tomu, že generovaná čísla skutečně nejsou naprosto náhodná, označují se tato čísla jako pseudonáhodná. Pokud bychom se chtěli opravdu více přiblížit náhodě, můžeme sáhnout po přírodních zákonech a nechat si pomoci. Své o tom ví i HotBits (viz Fyzikální generátory náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==Pseudonáhodná nebo náhodná čísla?==&lt;br /&gt;
Může vyvstat otázka, zda je lepší sada čistě náhodných čísel nebo pseudonáhodných čísel. Náhodná čísla například generovaná člověkem nebo přírodou mohou být nevhodná vzhledem k tomu, že některá čísla se opakují vícekrát a jiné méněkrát. Náhodnost může být ovlivněna tím, že člověk X ve výčtu od 1 do 100 preferuje častěji spíše čísla pod 50 a čísla nad 50 se vyskytují méně. Je zde ovšem porušena 100% náhodnost neboť každé číslo z výběru nemá naprosto stejnou pravděpodobnost výběru jako ostatní čísla. Taktéž výběr nevhodného přírodního jevu může způsobit, že některá čísla se vyskytují méně. V potaz můžeme vzít například šum pozadí. Jenže i šum existuje v různých barvách a tudíž se opět dostávají ke slovu některé hodnoty více než jiné.&lt;br /&gt;
V pseudonáhodných posloupnostech je hlídáno, aby bylo rozdělení náhodné veličiny opravdu pseudonáhodné s výskytem rovnoměrným dle vybrané pravděpodobnostní funkce. Generování poté už není zcela náhodné, ale rozdělení hodnot se tak tváří. Vybráním vhodné pravděpodobnostní funkce můžeme pravděpodobnost čísel ovlivnit, avšak o zbytek se stará už generátor.&lt;br /&gt;
U skutečně náhodných čísel může být také problém v jejich pomalejším získávání, zatímco generátor pseudonáhodných čísel plní pouze funkce algoritmů a může tak dodat kvanta náhodných hodnot během malé chvíle. Tam, kde tedy nezáleží příliš na náhodnosti, kde je potřeba spousta náhodných čísel během chvilky a kde je potřeba občas danou posloupnost hodnot zopakovat, se může více hodit posloupnost pseudonáhodných čísel. V oblastech hazardu či kryptografie, kde je naopak nežádoucí opakování posloupností, je naopak spíše žádán generátor skutečně náhodných čísel generovaných různými fyzikálními jevy.&lt;br /&gt;
Ku příkladu je jasné, že by lidé sázející ve sportce neměli důvěru v losovaná čísla, pokud by byla vylosována algoritmem. A problém by nevyvstal pouze v nedůvěře. Chytří lidé by si čísla zapisovali tak dlouho, dokud by nenašli řád mezi losovanými čísly a tím by mohli odhalit algoritmus, což si nepřeje ani sázková kancelář. Točení míčků je tedy sice také dáno algoritmem fyzikálním (tření, gravitace, spin, akce a reakce a další), ovšem počáteční seed je vždy náhodný, moment vytažení také, a tak je výsledek pokaždé jiný.&lt;br /&gt;
&lt;br /&gt;
=Fyzikální generátory náhodných čísel=&lt;br /&gt;
Fyzikální generátory jsou založeny na fyzikálních jevech, produkující nějaký šum. Ať už se jedná o atmosférický šum či využití fotoelektrického jevu. V následujících podkapitolách si ukážeme praktické příklady generátorů náhodných čísel TRNG (True Random Number Generator – Pravý generátor náhodných čísel).&lt;br /&gt;
&lt;br /&gt;
==HotBits==&lt;br /&gt;
Jednou z firem, získávající data tímto způsobem je švýcarská HotBits jenž generuje posloupnost pseudonáhodných bajtů na základě generátoru, který se řídí radioaktivním rozpadem částic, detekovaných v Geiger-Müllerové trubici propojené s počítačem. V tomto případě byl tedy generátor pseudonáhodných čísel nahrazen přírodním algoritmem. (Walker, 1996)&lt;br /&gt;
&lt;br /&gt;
==RADOM.ORG==&lt;br /&gt;
Další online službou je RANDOM.ORG, která získává náhodná čísla díky atmosférickému šumu. Je ale zapotřebí si hlídat nežádoucí šum, jako například ventilátor z počítače, který šum může ovlivnit a zanášet do něj svůj šum. Problém je pochopitelně v tom, že ventilátor produkuje pravidelný šum, který může náhodnost šumu snížit. RANDOM.ORG samozřejmě využívá faktu, že nikdo nezná rozpoložení a pohyb všech molekul vzduchu na planetě, proto se ani generovaná čísla nedají odhadnout. Místy navíc může zuřit nevyzpytatelná bouřka, což může šum také ovlivnit.&lt;br /&gt;
&lt;br /&gt;
==Silicon Graphics==&lt;br /&gt;
Jedná se o amerického výrobce počítačového hardwaru, který přišel s tzv. lavarand generátorem. Jeho principem je snímkování lávové lampy, v níž se volně a náhodně pohybuje materiál. Ten je snímkován jako vzor a z těchto snímků pak generátor vytváří posloupnosti náhodných dat. Protože pohyb materiálu je náhodný, jsou pak i čísla zcela náhodná. (Haahr, ©1998-2019)&lt;br /&gt;
Generátor na základě lidského vstupu&lt;br /&gt;
Existují také generátory, které generují náhodná čísla z pohybu PC myši či z intervalů mezi jednotlivými stisky kláves na klávesnici. Zde ovšem vyvstává problém v tom, že operační systém načítá rychlé stisky kláves do bufferu a odesílá po více znacích najednou. To samozřejmě ovlivňuje náhodnost dat. (Haahr, ©1998-2019)&lt;br /&gt;
&lt;br /&gt;
==Generování čísel míčky==&lt;br /&gt;
Tento generátor se využívá konkrétně v Sazce. Protože se zde hraje o vysoké peněžní částky, je pochopitelné, že čísla nejsou generována generátorem pseudonáhodných čísel. Přestože můžeme říci, že jsou do procesu výběru zapojeny fyzikální algoritmy (přitažlivá síla na základě hmotnosti míčků, třecí síla, zákon akce a reakce při odrazech a další), je výsledek těchto algoritmů tak složitý, jako louskání některých klíčů či komunikace v oboru kryptografie.&lt;br /&gt;
Generování probíhá tak, že je notářem vybrána jedena z osmi sad míčků. Míčky jsou následně zkontrolovány, zda není některý z nich poškozený, zda jsou všechny čisté a zda nejsou poškozeny štítky s čísly, které musí být 100% čitelné. Dále je provedena kontrola losování, aby bylo jisté, že vše funguje bezchybně a nenastane během losování žádná chyba. Teprve pak je spuštěno losování neboli generování náhodných čísel (u Sazky v rozmezí 1-80 včetně). Je zřejmé že v Sazce generátor určí, komu připadne obrovská suma peněz, proto je celý proces generování možná jedním z nejostřeji nejsledovanějších, ať už notáři, techniky, ale i veřejností. (Krejčí, 2016)&lt;br /&gt;
&lt;br /&gt;
=Generátory pseudonáhodných čísel v praxi=&lt;br /&gt;
Tyto generátory nachází své uplatnění v místech, kde jistá pravidelnost není na obtíž nebo kde je potřeba se k vygenerované sekvenci dostat vícekrát. Své uplatnění najdou například v přehrávačích hudby, kde je zapnuta funkce náhodného výběru další skladby. Dále pak také v simulacích či modelování. (Bashar, 2001)&lt;br /&gt;
&lt;br /&gt;
=Lineární kongruentní generátor=&lt;br /&gt;
Lineární kongruentní generátor je jedním z nejstarších a dle (Dorda, nedatováno) také nejrozšířenější z generátorů pseudonáhodných čísel. Každý další prvek je spočítán pomocí funkce x_(n+1)=(l∙x_n+m)  mod M, přičemž M je horní mez velikosti prvků, která má funkci modulo neboli zbytek po dělení číslem M. Pokud je například M=10, pak nejvyšší náhodné číslo bude 9.&lt;br /&gt;
Pokud kupříkladu zvolíme M rovno 27, l rovno 5, m rovno 9 a první prvek (seed) zvolíme 8, pak další čísla dle výše uvedeného vztahu budou 22, 11, 10, 5, 7, 17 atd. U 19. prvku ovšem dostáváme opět 8, 22, 11 a řada se celá opakuje. Nevhodnou volbou parametrů se může stát, že bude opakování častější.&lt;br /&gt;
UNIXová funkce rand() (viz Generátory programovacích jazyků) používá tento generátor také a to s parametry l=1103515245, m=12345 a M=2^32. (Bashar, 2001)&lt;br /&gt;
Pro počítače IBM byl zase generátor x_(n+1)=65539∙x_n (mod 2^31 ). (Dorda, nedatováno)&lt;br /&gt;
&lt;br /&gt;
==Fibonacciho generátor==&lt;br /&gt;
Fibonacciho generátor se odvíjí od Fibonacciho posloupnosti, kde každý další prvek je součtem předchozích dvou. Posloupnost začíná při počátku v 1 jako 1, 2, 3, 5, 8, 13, 21 atd. Pokud přidáme jako u předchozího generátoru opět mod M, omezíme získaná čísla zase na celočíselné zbytky po dělení M a tím stanovíme horní mez pro získané hodnoty. Podobně založen byl Millerův a Prenticův generátor, který byl definován vzorcem x_(n+1)=x_(n-2)+x_(n-3) (mod 3137), jenž má periodu po 9 843 907 prvcích.  (Dorda, nedatováno)&lt;br /&gt;
&lt;br /&gt;
==Mersenne Twister==&lt;br /&gt;
Algoritmus Mersenne Twister (také jako MT19937) je nejen velmi rychlý, ale má i velkou periodu (počet čísel, po které se začne řada opakovat) 2^19937-1. Je dokonce rychlejší než lineárně kongruentní generátor, ovšem je mnohem náročnější na paměť. Díky své rychlosti a velké periodicitě se výborně hodí pro různé simulace. (ifanda.cz, 2011)&lt;br /&gt;
Stojí za zmínku, že tento algoritmus je mimo jiné také využit ke generování náhodných čísel pro funkci RAND (česky NÁHČÍSLO), a t konkrétně v Officech 2010 (Microsoft.com, ©2019), a pak je také tento generátor využit v Simulačním softwaru NetLogo, kde je také použit ke generování ve funkci random (Wilensky, 2004). MT19937 je využit v mnohých softwarech od MS Office až po různé simulační programy a v neposlední řadě také v mnoha programovacích jazycích.&lt;br /&gt;
&lt;br /&gt;
==Complimentary-multiply-with-carry==&lt;br /&gt;
Jedná se o alternativu k algoritmu Mersenne Twister, který má ještě větší periodu 2^131086 a je ještě rychlejší, ale opět paměťově ještě náročnější. (ifanda.cz, 2011)&lt;br /&gt;
&lt;br /&gt;
==MS Excel generátor pseudonáhodných čísel==&lt;br /&gt;
MS Excel obsahuje v sobě zabudovaný též generátor pseudonáhodných čísel. Jak bylo zmíněno výše (viz  Mersenne Twister), pracuje na principu MT19937, což znamená, že jeho periodicita je po 2^19937-1 prvcích. Najdeme jej pod kartou Data a následně Analýza dat. Jedná se o doplněk, který musí být dodatečně dodán. Po kliknutí vybereme Generátor pseudonáhodných čísel. Následné okno je přizpůsobeno podle volby Typu rozložení. Co je ale společné, je počet proměnných (udává počet generovaných sloupců) a počet náhodných čísel (počet generovaných řádků). Pokud se pokusíme o rovnoměrné rozdělení, můžeme se podívat, jak tyto generátory fungují. Pro názornost byly vybrány 3 sloupce po 1000 čísel od 1 do 1000. Obrázky č. 2, 3 a 4 zachycují histogram z určitých intervalů. Můžeme vidět, že se algoritmus opravdu snaží o rovnoměrné rozmístění náhodných čísel. Jen tak pro zajímavost, směrodatné odchylky jsou pro první graf 28.72, pro druhý 28.08 a pro třetí 28.94. Vidíme tedy že algoritmus se opravdu držel nízké odchylky, přičemž ve druhé posloupnosti se mu to dařilo nejlépe a v poslední nejhůře. U třetího totiž upřednostňoval více čísla z inervalu 1-11.&lt;br /&gt;
Pokud vyzkoušíme generátor například Normálního rozdělení, algoritmus opět hlídá rovnoměrnost dle nastavených parametrů. Opět ale každá řada vychází jinak.&lt;br /&gt;
Narážíme zde na zmíněnou výhodu a nevýhodu zároveň, a sice opakovatelnost pseudonáhodných posloupností. Ať se mohou vygenerovaná čísla jevit jakkoliv náhodná, byla vypočítána algoritmem. Klíčové políčko je v nastavení generátoru Základ generátoru (neboli seed). Pokud vygenerujeme posloupnost např. 1000 čísel od 1 do 100 a zadáme základ například 3, při každém dalším pokusu se stejnými parametry a hlavně základem dostáváme opět tutéž samou posloupnost čísel. To je v různých oborech žádoucí a v jiných nikoliv.&lt;br /&gt;
&lt;br /&gt;
==Kryptografie==&lt;br /&gt;
Náhodná čísla se uplatňují také v oboru kryptografie, ať už se jedná o elektronické podpisy nebo šifrování dat. Ku příkladu můžeme uvést RSA generátor, který je používán pro generování bezpečné RSA šifry. Pro RSA šifru je potřeba vygenerovat dle předepsaného algoritmu klíč veřejný a privátní. Zjištění privátního klíče není nemožné, ovšem zabere tolik času, že jsou data již neaktuální. (Šefr, 2006)&lt;br /&gt;
Posuneme-li se dále, bude nás zajímat, co vše musí generátor pseudonáhodných čísel v kryptografii splňovat. Je zřejmé, že kryptografie je citlivý obor, kde budou kladeny vyšší nároky na generátor pseudonáhodných čísel.&lt;br /&gt;
	Čísla musí být pseudonáhodná, což znamená, že nelze v relativně blízké době s pravděpodobností větší než 50 % zjistit další číslo.&lt;br /&gt;
	I za předpokladu, že uniknou data o stavu generátoru nesmí být snadné opět zjistit již vygenerovanou sekvenci. Této podmínce říkáme dopředná bezpečnost.&lt;br /&gt;
	Pokud se útočník dostane k datům generátoru a zná tak jeho současný stav, i přesto by neměl být schopen generovat stejná čísla jako generátor. Této podmínce se říká zpětná bezpečnost a můžeme jí docílit například pravidelným přidáváním entropie do současného stavu.&lt;br /&gt;
&lt;br /&gt;
==Generátory programovacích jazyků==&lt;br /&gt;
===C===&lt;br /&gt;
Pro linuxový jazyk C je pro práci s pseudonáhodnými čísly použita funkce rand() a srand() ze standardní funkce &amp;lt;stdlib.h&amp;gt;. Funkce rand() vrací náhodné číslo od 0 do RAND_MAX, funkce srand čísla nevrací, ale poskytuje možnost zadání seed neboli počátku (pro případ, že budeme chtít posloupnost zopakovat) pro funkci rand(). Bohužel se tyto funkce ukázaly jako špatná volba pro dostatečnou náhodnost generovaných čísel. Proto nejsou vhodné k použití, kde je potřeba dobrá náhoda čísel, jako například v kryptografii. (linux.die.net, nedatováno)&lt;br /&gt;
&lt;br /&gt;
===C#===&lt;br /&gt;
Ve světě C# existuje třída pro práci s pseudonáhodnými čísly System.Random. Tato třída se inicializuje formou semínka seed (pokud není zadáno, použije se aktuální datum a čas). Dále pak obsahuje funkce Next(), která vrátí další pseudonáhodné číslo, Next(Int32), vracející pseudonáhodná čísla menší než zadaný parametr a nakonec Next(Int32,Int32) vracející čísla větší než první argument a menší než druhý argument. Generátor v jazyce C# se zdá být mnohem lepší než pro jazyk C, ovšem problém nastává ve chvíli, kdy ve stejném cyklu pokaždé inicializujeme Random a následně vygenerujeme další číslo. Protože cykly probíhají standardně velmi rychle, je semínko většinu cyklů stejné, a tak se může stát, že dostaneme více stejných čísel. Tomu se pochopitelně můžeme vyhnout tím, že Random inicializujeme pouze jednou. Další problém nastává, pokud používáme více vláken Thread. Zde se doporučuje, aby si každé vlákno inicializovalo svou instanci Random. (Skeet, nedatováno)&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
Pro jazyk Java lze využít hned dvě různé funkce Random(), každá z jiné knihovny. První je z knihovny java.lang.Math a druhá z java.util.Random.&lt;br /&gt;
Při použití Math.random() dostáváme hodnoty v rozsahu 0 až 1. Můžeme tedy dostat číslo například 0.42589632565639872. Pochopitelně zapojením této funkce s dalším upravujícím kódem lze funkci přizpůsobit, aby vracela čísla v jiném rozsahu.&lt;br /&gt;
Třída Random jakožto druhá varianta pak umí vracet více typů jako float, double, long či boolean. Tato třída generuje náhodná čísla pomocí lineárního kongruentního generátoru (viz kapitola Lineární kongruentní generátor). Generování je tedy velmi rychlé, ale nelze využít na jiné bezpečnostní či identifikační účely. (Thompson, 2017)&lt;br /&gt;
&lt;br /&gt;
=Závěr=&lt;br /&gt;
Generátory pseudonáhodných čísel jsou nepostradatelnou součástí programovacích jazyků, simulačních prostředí a dalších softwarů. Oproti generátorům skutečně náhodných čísel mají své výhody jako rychlost a opakovatelnost v místech, kde si to přejeme, ale na druhou stranu trpí nedostatkem náhodnosti, protože posloupnost získávaných čísel se může v jistém bodě znovu opakovat. Proto se nehodí pro bezpečnost či hazard. Vždy bychom si proto měli být vědomi, který typ generátoru používáme, jak rychle potřebujeme čísla dostávat a jak moc nám záleží na nevyzpytatelnosti generovaných čísel.&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Assignment_SS_2018/2019/cs&amp;diff=17950</id>
		<title>Assignment SS 2018/2019/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Assignment_SS_2018/2019/cs&amp;diff=17950"/>
		<updated>2019-05-09T06:57:24Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Zadání LS 2018/2019}}&lt;br /&gt;
&lt;br /&gt;
{{Ambox&lt;br /&gt;
| text  = &amp;lt;div&amp;gt;&lt;br /&gt;
Na tuto stránku vkládejte svá zadání. Nezapomeňte se podepsat. Můžete použít &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; (čtyři tildy) k automatickému podpisu. Používejte Ukázat náhled, abyste si prohlédli Váš výsledek před konečným odesláním.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Ambox&lt;br /&gt;
| text  = &amp;lt;div&amp;gt;&lt;br /&gt;
Prosíme, snažte se formulovat Vaše zadání pečlive. S ohledem na to, že jde o Vaši semestrální práci, očekáváme adekvátní úsilí vynaložené na zadání. Nezapomeňte, že hlavním výsledkem má být výzkumná zpráva, což znamená, že Váš simulační model musí generovat takové výsledky, které jsou konkrétní, měřitelné a ověřitelné. Pečlivě promyslete, jakým způsobem budete vyvíjet Váš model, odvoďte entity, které budete používat, nakreslete si diagram modelu, zvažte, co budete měřit. Teprve pokud máte o modelu dostatečně přesnou představu, vložte Vaše zadání. A samozřejmě, nezapomeňte si prosím přečíst [[How to deal with the simulation assignment/cs|Jak na simulace]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Ambox&lt;br /&gt;
| type  = content&lt;br /&gt;
| text  = &amp;lt;div&amp;gt;&lt;br /&gt;
Abychom se vyhnuli případnému budoucímu nedorozumnění, prosíme, ověřte si, že máte tučné '''schváleno''' někde v našem komentáři pod Vaším zadání. Pokud tam není '''schváleno''', znamená to, že Vaše zadání dosud schváleno nebylo.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulace sjezdovky ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Simulace sjezdovky&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Michal Pokorný&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': Simulace pohybu lyžařů/snowboardistů na svahu. Účastníci simulace jsou nejdříve vyvezeni vlekem/ky na vrcholek svahu a následně v závislosti na svojí strategii sjedou svah dolů.&lt;br /&gt;
Simulace by řešila optimální počet a průchodnost vleků v závislosti na počtu účastníků (toto lze řešit výpočtem), počet nehod v závislosti na počtu vleků/účastníků a porovnání jednotlivých strategií účastníků (jejich rychlost) s pravděpodobností jejich srážky s jiným účastníkem.&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* Velikost svahu &lt;br /&gt;
* Počet účastníků&lt;br /&gt;
* Strategie (rychlost) účastníků&lt;br /&gt;
* Počet a rychlost vleků&lt;br /&gt;
&lt;br /&gt;
'''Možné rozšíření''': Úprk před lavinou, různé typy (rychlosti) sjezdovek, možnost pádu účastníka bez srážky s jiným účastníkem, různé obtížnosti sjezdovek (vyšší četnost pádů), vliv strategie na četnost pádů&lt;br /&gt;
&lt;br /&gt;
: Nevidím tady mnoho důvodů k agentní simulaci. Vychází mi z toho simulace diskrétní a to ještě poměrně jednoduchá. Popřemýšlel bych buďto, jak to transformovat do simulace vhodné pro agenty (viz kritéria diskutovaný na poslední hodině) nebo to dělat jako diskrétní simulaci (ale v tom případě by bylo dobré trochu zvýšit složitost) či popřemýšlet o něčem úplně jiném. [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 19:27, 5 May 2019 (CET)&lt;br /&gt;
:: Doplňuji s odstupem pár dnů - vemte si prosím případ nějaké konkrétní sjezdovky (velká lyžařská centra mají poměrně detailní mapy a dokonce jsou k dispozici i nějaké informace o kapacitách a vytížení) a pak by to smysl jako agentní simulace dávalo. Pokud je to v takovéhle modifikaci za Vás OK, pak '''schváleno'''. [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 18:43, 8 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Simulace šíření spalniček ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Simulace šíření spalniček&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Jurij Povoroznyk, povj01&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': V České republice propukla epidemie spalniček. Tato nemoc se k nám dostal od cestovatele z Indie přímo do hlavního města Prahy. Celkově bylo nakaženo 2 000 lidí a další lidé rychle přibývají. Nakažený jedinci jsou z různých věkových kategorií. Přičemž děti v rozmezí 3–5 let jsou na tuto nemoc náchylnější a můžou této nemoci rychle podlehnout, dokonce umřít pokud nejsou již očkování. Očkovat dítě je možné minimálně od 1 roku života. Bylo zjištěno, že z celého souboru nebylo očkováno ani jednou dávkou vakcíny 39 % osob. Dvěma dávkami vakcíny bylo očkováno 42 % nakažených. Onemocnění se projevuje horečkou, rýmou, kašlem, slzícíma očima a na bukální sliznici jsou bělavé tečky se zarudlým okolím. Virus spalniček se přenáší kapénkovou infekcí. Inkubační doba spalniček je 6–19 dní, průměrně 13 dní. Infikovaní lidé jsou nakažliví ještě 4 až 5 dní před propuknutím této nemoci. Úmrtnost je velmi malá, 3 smrti z 1 000 případů. U dětí, které nedostali vakcínu a jsou nakažený touto chorobou je patřičně větší.&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* Počet infikovaných &lt;br /&gt;
* Počet zdravých&lt;br /&gt;
* Počet jedinců z různých věkových kategorií&lt;br /&gt;
* Očkovaných jednou vakcínou, dvěma nebo žádnou&lt;br /&gt;
* Počet mrtvých&lt;br /&gt;
* Těžce nemocný jedinci&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': Cílem tohoto modelu je určit a sledovat průběh této epidemie. Zároveň pomocí tohoto modelu lze určit, jak budou na tuto epidemii reagovat různé věkové kategorie a počet vakcín obdržených před vypuknutím epidemie. Údaje získané z této simulace by měly přesvědčit rodiče k očkování svých děti ihned jak to bude možné. &lt;br /&gt;
&lt;br /&gt;
'''Možnosti rozšíření''': Model lze rozšířit o konkrétnější data - např.: typ vakcíny, absolvovaná karanténa nebo počet zdravých jedinců v rodině. Celkově se model rozšíří pokud budou adekvátní přibližná data a statistiky propuklé epidemie.&lt;br /&gt;
&lt;br /&gt;
: Není mi úplně jasné, jak by to mělo vypadat a proč to chcete dělat jako agentní simulaci. Vezměte si prosím ta kritéria, která jsme si říkali na poslední hodině a otestujte si, kterým to vyhovuje. Tak jak je to popsáno by to podle mě spíš směřovalo do systémové dynamiky. Zkuste to prosím buď jinak navrhnout nebo zvolit jiný nástroj nebo eventuálně jiné téma. [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 19:45, 5 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Modelace populačního vývoje ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Modelace populačního vývoje&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Josef Čekan, cekj01&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Systémově dynamický&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': Vensim&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': Vlivy na stav populace v příštích letech se každým rokem mění, tudíž vytvořit permanentně přesný model vývoje populace není zcela možné. Zároveň existují faktory, které nelze jednoduše předpokládat jako například některé přírodní katastrofy či vypuknutí epidemií nemocí či válečného konfliktu. Můžeme však vytvořit model na základě vlivů, které částečně předpověditelné jsou. V tomto modelu bude na základě dat o porodnosti, úmrtnosti a migraci porovnán vývoj populace na jednotlivých kontinentech. Model tedy bude vývoj populace stavět na datech o porodnosti, úmrtnosti a mezinárodní migraci.&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* Populace &lt;br /&gt;
* Migrace&lt;br /&gt;
* Míra porodnosti, úmrtnosti a počet migrantů&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': Na základě získaných dat předpovědět populační vývoj a porovnat jej na úrovni kontinentů.  &lt;br /&gt;
&lt;br /&gt;
'''Možnosti rozšíření''': Model lze více konkretizovat (snížit abstrakci) při uvážení věkového rozdělení populace a migrantů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::Zdravím, úloha je to pro Vensim jak dělaná a opora v reálných datech žádaná. Chtělo by ji ale rozvinout, jelikož systémová dynamika je založená na zpětných vazbách, tak aby ty vazby v tomto modelu nebyly jen jednosměrné vazby a hlavně je třeba do toho přidat faktory nahodilosti. Dalé např. migrace je až důsledek nějakho fenoménu - hlad, válka( bezpečnost) atp. Takže migrace, míra porodnosti a úmrtnosti jako endogenní proměné dobrý, ale simulaci je třeba rozšířit i o parametry, které tyto proměné ovliňují (vlastně nastavují/spouští). Všechny tyto jevy mají zase nějaké proti reakce (právě ty zpětné smyčky), které daný fenomn brzdí např. růst imigrace -&amp;gt; růst kriminality -&amp;gt; snaha zamezit imigraci. Pokud to tak bude tak pak '''schváleno'''. Pokud ne, tak u hodnocení budu dost nekompromisní.[[User:Oleg.Svatos|Oleg.Svatos]] ([[User talk:Oleg.Svatos|talk]]) 12:34, 4 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Simulace Japonské aukce ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Simulace Japonské aukce&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Dominik Turák, turd01&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': &lt;br /&gt;
* Japonská aukce je, podobně jako anglická, aukcí se zvyšující se cenou. Na rozdíl od anglické aukce zvyšování ceny nevyhlašují účastníci, ale vyvolávač. Účastníci ochotní kupovat na začátku stojí, vyvolávač postupně hlásí vyšší a vyšší cenu, kdo z účastníků již není ochoten tolik zaplatit, dá to najevo usednutím. Kdo jednou usedl, nesmí se znovu do téže dražby zapojit; tímto rysem se japonská aukce liší od anglické po strategické stránce (anglická verze umožňuje zvýšit příhoz i těm, kteří dočasně nepřihazovali). &lt;br /&gt;
&lt;br /&gt;
* Tento model bude obsahovať 50 účastníkov aukce, 1 vyvolávača cien a 20 vopred určených starožitností s ich minimálnou požadovanou cenou&lt;br /&gt;
&lt;br /&gt;
* starožitnosti budú objekty, ktoré:&lt;br /&gt;
** budú mať vopred stanovenú cenu v intervale &amp;lt;500 000, 2 000 000&amp;gt;&lt;br /&gt;
** budú určitého typu náhodne zvolenom z týchto 5 typov:&lt;br /&gt;
*** Váza&lt;br /&gt;
*** Kniha&lt;br /&gt;
*** Lampa&lt;br /&gt;
*** Skriňa&lt;br /&gt;
*** Obraz&lt;br /&gt;
** ich meno sa bude skladať z 2 alebo viacerých slov, pričom prvé slovo bude stále určovať typ&lt;br /&gt;
&lt;br /&gt;
* vyvolávač bude 1 špeciálny agent, ktorý:&lt;br /&gt;
** začne na 90% požadovanej ceny za danú vec&lt;br /&gt;
** cenu postupne zvyšuje o 5%&lt;br /&gt;
** interval oznámenia zvýšenia ceny je určený náhodne v intervale 30-60 sekúnd&lt;br /&gt;
** každých 30 sekúnd oznámi gong =&amp;gt; účastníci budú vedieť že cena sa každú chvíľu zvýši&lt;br /&gt;
&lt;br /&gt;
* Každý účastník bude jeden agent:&lt;br /&gt;
** TODO&lt;br /&gt;
** bude zároveň aj obchodník, čo znamená že bude vedieť odhadnúť cenu tovaru =&amp;gt; neposadí sa hneď, ako začne aukcia ak sa práve nedraží jedna z jeho vyhliadnutých vecí&lt;br /&gt;
** finančný kapitál v intervale &amp;lt;1 500 000, 2 000 000&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* 1 vyvolávač cien + 20 starožitností a ich ceny&lt;br /&gt;
* 50 účastníku + 7 náhodne zvolených starožitností pre každého z nich&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': Simulovať priebeh aukcie a ukázať vplyvy rôznych faktorov na finálnu cenu produktov. Ukázať nadhodnotenú cenu produktov pri aukciách a sledovať reakcie agentov na akcie iných agentov.&lt;br /&gt;
&lt;br /&gt;
'''Možnosti rozšíření''': Na výber viac typov aukcí, nastavenie počtu zákazníkov&lt;br /&gt;
&lt;br /&gt;
: Nevidím v tomto zadání nějakou přidanou hodnotu. Co by mělo být přínosem? Velmi rychle byste zjistil, že výsledek je předvídatelný a závislý především na modelu chování účastníků. Doporučoval bych to přehodnotit. [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 20:56, 5 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Simulace ideálního rozdělení klužiště na rybníkový hokej ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Simulace ideálního rozdělení klužiště na rybníkový hokej&lt;br /&gt;
&lt;br /&gt;
'''Autor''': David Lisý, xlisd05&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': diskrétní simulace&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': SIMPROCESS&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': Jelikož hokej závodně hraji, rozhodl jsem se na toto téma zpracovat i svou simulaci. V současnosti je trendem pro závodní, ale především pro rekreační hráče tzv.&amp;quot;rybníkový hokej&amp;quot;. Ten se hraje bez výstroje, v počtu 4 na 4, na malé branky a na třetinu jednoho klasického kluziště (na jedné klasické ledové ploše tedy máme 3 hrací plochy pro rybníkový hokej). Z vlastní zkušenosti mohu potvrdit, že hrají-li spolu pohromadě závodní hráči s hráči amatérskými, výsledná hra ztrácí na své kvalitě. Je proto lepší, hrají-li zápas proti sobě hráči stejné výkonnostní kategorie. Rozlišujeme pak tyto:&lt;br /&gt;
 - závodní hráč (hráč se zkušenostmi z profesionálních, či závodních soutěží)&lt;br /&gt;
 - pokročilý amatérský hráč (hráč se zkušeností z rekreačních soutěží)&lt;br /&gt;
 - amatérský hráč - začátečník (hráč bez jakýchkoliv zkušeností z rekreačních soutěží)&lt;br /&gt;
&lt;br /&gt;
Data budou čerpána z reálného zimního stadionu v Praze, který disponuje 2 ledovými plochami (celkově tedy simulace sleduje 6 hracích ploch pro rybníkový hokej). Podstatný fakt je ten, že se tedy hraje 4 na 4, střídá se stylem &amp;quot;poslední do hry - poslední na střídačku&amp;quot; (na střídačce se nám tedy tvoří jakási fronta hráčů) a počet hráčů na jedné střídačce není nikterak omezen. Na základě vlastního pozorování budu v simulaci počítat s následujícím procentuálním rozdělením výkonnostních kategorií:&lt;br /&gt;
 - závodní hráči = 15%&lt;br /&gt;
 - pokročilí amatérští hráči = 60%&lt;br /&gt;
 - amatérští hráči - začátečníci = 25%&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* počet hráčů&lt;br /&gt;
* průměrná doba hraní na stadionu&lt;br /&gt;
* počet hracích ploch pro rybníkový hokej (6)&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': pomocí simulace zjistit ideální rozvrhnutí hracích ploch dle výkonnostních kategorií&lt;br /&gt;
&lt;br /&gt;
'''Schváleno''' [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 18:45, 8 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Vytíženost posilovny ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''Název''': Vytíženost posilovny&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Martin Matějka, xmatm82&lt;br /&gt;
&lt;br /&gt;
'''Nástroj''': SIMPROCESS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definice problému''': &lt;br /&gt;
V dnešní době je velice populární zajít si zacvičit nebo se jen tak protáhnout do pohodlné, hezky vybavené posilovny. Jelikož je tento způsob cvičení v dnešní době tak populární, je dobré vědět, jak si na tom určitá posilovna stojí z hlediska schopnosti pokrytí návševnosti. Jak z pohledu zákazníka, tak i provozního, co by mohl zlepšit.  Mají dostatek místa? Dostatek nástrojů či pomůcek na posílování? Mají všichni možnost se dojít osprchovat bez delšího čekání nebo nevázne to hnedka u vchodu při koupi vstupenky?  &lt;br /&gt;
&lt;br /&gt;
'''Metoda''':&lt;br /&gt;
V simulaci bude zahrnuta spousta entit, které budou mít na výsledné hodnoty vliv (druh zákazníka, doba návštěvy..), ale jednou z nejdůležitějčích entit je množství a frekvence návševníků přicházející do posilovny. Pro generování návštěvníků bude použit určitý algoritmus, který bude produkovat náhodná čísla, ale také bude zahrnovat učité hodnoty ze známého chování návštěvníků. Například, že v dopoledních hodinách je nevštěvnost o něco měnší a nebo o víkendech zase vyšší. Pro zanalyzování vytíženosti posilovny v čase je Monte Carlo dobrá volba.&lt;br /&gt;
&lt;br /&gt;
::Zdravím, co všechno by byly tedy náhodné proměnné? Na základě jakých reálných dat budete odvozovat jejich pravděpodobnostní rozdělení? (data a odvození pravděpodobnostních rozdělení musí být součástí vypracované simulace). Jak přesně bude simulace fungovat? Předpokládám, že i když zmiňujete Monte Carlo, tak jako nástroj jste si vybral Simprocess, což je v tomto případě relevatní - v Excelu by udělat nešlo. [[User:Oleg.Svatos|Oleg.Svatos]] ([[User talk:Oleg.Svatos|talk]]) 12:11, 4 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
::: Odpověďi: &lt;br /&gt;
::: 1)''Náhodné proměné?''&lt;br /&gt;
                 - počet návštěvníků&lt;br /&gt;
                 - zaměření návštěvníka &lt;br /&gt;
                     - fitness partie (horní, dolní, full-body)&lt;br /&gt;
                     - cardio &lt;br /&gt;
                 - volba nástrojů na cvičení &lt;br /&gt;
                 - popřípadě i doba návštěvy&lt;br /&gt;
  &lt;br /&gt;
::: 2)''Reálných dat?'' Co se týče vybavení posilovny (druhy,počty strojů), mohu sestavit několik šablon, které v reálu představujou     posilovny, které znám. Návštěvnost bude taková, aby byla reálná a také trochu hraniční, aby byla známa přibližná maximální zatíženost posilovny. Dále čas strávených na určitých posilovacích zařízení budou stanoveny podle mého vlasního uvážení, které vychází z mnoha let zkušeností. &lt;br /&gt;
&lt;br /&gt;
::: 3)''Jak bude fungovat?'' Budou přícházet návštěvnící do posilovny. Která má stanovený počty několika druhů vybavení. Každý návštěvník má určité zaměření, co chce posilovat a tím je stanoveno jaké stroje by chtěl použít. Použije pár strojů, vysprchuje, oblíkne a odejde. Budem sledovat jaké stroje jsou nejvíce/nejméně vytíženy. Kde má posilovna nedostatny atd. [[User:Xmatm82|Xmatm82]] ([[User talk:Xmatm82|talk]]) 19:34, 7 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
:::: V pořádku, nicméně: opatřete si data z nějaké konkrétní posilovny/posiloven. Z kontextu jsem pochopil, že Vám toto prostředí není cizí, neměl by to pro Vás být tedy problém. Vlastní zkušenost je důležitá, ale někdy nekoresponduje zcela s realitou. Dále, tak jak to popisujete (náhodné volby různých posilovacích strojů apod.), není úplně triviální. Lze to udělat, každopádně potřebujete ostrou verzi Simprocessu (je na učebnách). '''Schváleno'''. [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 18:51, 8 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Spotřeba surovin ve fastfoodu ==&lt;br /&gt;
----&lt;br /&gt;
'''Název''': Spotřeba surovin ve fastfoodu&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Josef Kočí&lt;br /&gt;
&lt;br /&gt;
'''Nástroj''': Simprocess&lt;br /&gt;
&lt;br /&gt;
'''Definice modelu''':&lt;br /&gt;
Protože již 4 roky pracuji ve společnosti AmRest, z pozice hlavního instruktora mám přístup k manažerským systémům, kde lze sledovat data o prodeji, počtu objednávek v různých hodinách a spotřebu jednotlivých ingrediencí. Mým cílem je část této reality zachytit v programu Simprocess, zobrazit v něm proces na jednotlivých ingrediencích, jejich objednání a naskladnění ráno, jejich průběžné vyskladňování, použití do procesu až k vydání zákazníkům. Proces tak zachytí, kolik dle simulací průměrně zůstává nevyužitých ingrediencí, jak dlouho přibližně zákazníci čekají a pokusím se případně i o analýzu zlepšení tzv. SOS (Speed of Service).&lt;br /&gt;
&lt;br /&gt;
'''Data''':&lt;br /&gt;
Vstupní data jako množství zákazníků v jedno hodinách či spotřeba ingrediencí sice budou náhodná (avšak vzájemně spolupracující), nicméně budu vycházet z reálných dat z manažerských systémů tak, aby počty objednávek na různé hodiny přibližně seděly.&lt;br /&gt;
&lt;br /&gt;
'''Doplnění''':&lt;br /&gt;
Prostředí bude přímo z KFC, jelikož ale Simprocess má limitované množství entit, nezachytím bohužel všechny suroviny, které se v KFC používají. Proto se pokusím zachytit ty nejdůležitější. Mezi hlavní cíl patří monitoring zbylých surovin a pokusit se o minimalizaci jejich množství, které na konci zbyde. Budu tedy hledat kritická místa, o nichž pak sepíšu zprávu. Mým cílem tedy bude dosáhnutí co nejmenšího zbytku surovin na konci dne. Z vlastní zkušenosti vím, že není možné skončit s naprosto prázdným stavem, neboť to ve výsledku může negativně ovlivnit SOS v průběhu posledních hodin.&lt;br /&gt;
V modelu se pochopitelně pokusím o co nejvěrnější proces, tedy sendviče se nějakou dobu zpracovávají, maso se nějakou dobu připravuje a pak nějakou dobu smaží. Uvidím, jak detailně se mi proces povede zachytit.&lt;br /&gt;
&lt;br /&gt;
: Téma je OK, ale je potřeba jej zpřesnit. 1) Stanovte zcela konkrétní cíl(e). Z toho zadání mi to moc konkrétní nepřijde. Co je cílem? Minimalizace zásob? Je to issue? 2) Amrest má pokud vím více brandů. Uvidíte podle definice cíle, ale pravděpodobně bude dobré vyberte si jeden a nasimulovat jej do detailu. 3) Je potřeba zohlednit všechny faktory, které mohou být s ohledem na výsledek relevantní. Předběžně to má zelenou, ale rozpracujte to zadání prosím dopodrobna. [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 21:06, 5 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Simulace automobilových závodů ==&lt;br /&gt;
----&lt;br /&gt;
'''Název:''' Simulace automobilových závodů&lt;br /&gt;
&lt;br /&gt;
'''Autor:''' [[User:Jinv00|Jinv00]] ([[User talk:Jinv00|talk]]) 10:51, 5 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
'''Nástroj:''' Netlogo&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu:''' Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Popis modelu:''' Simulace pohybu závodních vozů po okruhu. Vozy jsou na začátku závodu seřazeny na startovní rovince, a po odstartování krouží po okruhu. Každý vůz může mít různou (náhodně přidělenou) rychlost. Rychlost vozů je kromě základní přidělené rychlosti závislá i na míře opotřebení pneumatik (opotřebovanější pneumatiky jsou pomalejší než méně opotřebované), na aktuální zvolené směsi pneumatik (měkčí směs pneumatik je rychlejší než tvrdší) a na jízdním stylu řidiče (agresivní jízdní styl je rychlejší než konzervativní). Rychlost opotřebovávání pneumatik je závislá na zvolené směsi pneumatik (měkčí směs pneumatik se opotřebovává rychleji než tvrdší), na jízdním stylu řidiče (agresivním jízdním stylem se pneumatiky opotřebovávají rychleji než konzervativním jízdním stylem) a na vzdálenosti vozu za jiným vozem (jízda do cca 2 sekund za jiným vozem má za následek ztrátu přítlaku, pronásledující vůz tak po trati více &amp;quot;klouže&amp;quot; a tím trpí pneumatiky). Přezouvání pneumatik se provádí během pit stopů, které trvají nějaký čas (a k tomu samotná jízda boxovou uličkou je pomalejší než jízda po okruhu). Projede-li vůz za jiným detekční zónou pro DRS s odstupem menším než 1 sekundu, můžu potom v následující DRS zóně využít DRS pro krátkodobé zvýšení rychlosti. Každý vůz musí během závodu použít alespoň 2 různé směsi pneumatik.&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu:'''&lt;br /&gt;
* Počet vozů&lt;br /&gt;
* Počet kol závodu&lt;br /&gt;
* Rychlost vozů (náhodná v intervalu od nejnižší zadané rychlosti po nejvyšší zadanou)&lt;br /&gt;
* Průměrná míra opotřebení jednotlivých směsí pneumatik&lt;br /&gt;
* Míra vlivu opotřebení pneumatik na rychlost vozu&lt;br /&gt;
* Míra vlivu použité směsi pneumatik na rychlost vozu&lt;br /&gt;
* Míra vlivu jízdního stylu řidiče na rychlost vozu&lt;br /&gt;
* Rychlost opotřebovávání jednotlivých směsí pneumatik&lt;br /&gt;
* Míra vlivu jízdního stylu řidiče na míru opotřebení pneumatik&lt;br /&gt;
* Míra vlivu jízdy v závěsu (do cca 2 s) za jiným vozem na opotřebení pneumatik&lt;br /&gt;
* Rychlost vozů v boxové uličce&lt;br /&gt;
* Rychlost vozů v DRS zóně&lt;br /&gt;
* Zvolená směs pneumatik jednotlivých vozů na startu závodu&lt;br /&gt;
* Počet zastávek v boxech&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace:''' Simulací by se dala odhadnout optimální strategie zastávek v boxech (počet zastávek, načasování zastávek, použité sady pneumatik (a jejich počet)) a optimální jízdní styl (agresivní/konzervativní).&lt;br /&gt;
&lt;br /&gt;
'''Možnosti rozšíření:''' Pravděpodobnosti předjetí v různých částech tratě (v mnou navrženém modelu rychlejší vůz vždy kdekoliv předjede pomalejší, ve skutečnosti je však předjetí nejpravděpodobnější na dlouhých rovinkách (ideálně za asistence DRS) a v zatáčkách s větší šířkou tratě; v modelu vůbec neuvažuji zdržení jednoho vozu za druhým kvůli nemožnosti ho předjet). Kolize (v mnou navrženém modelu sebou mohou jednotlivé vozy &amp;quot;projet&amp;quot; bez jakékoliv možnosti havárie). Slipstream - vůz jedoucí za jiným (především při vyšších rychlostech) může využít slipstream vznikající za pronásledovaným vozem ke zvýšení rychlosti. Různá rychlost vozů v různých částech tratě - vyšší rychlost na rovinkách, nižší v zatáčkách (v mnou navrženém modelu je rychlost vozu na celé trati vždy stejná (kromě boxové uličky a DRS zón)), k tomu by šlo přidat i různé nastavení vozů (vyšší přítlak = vyšší rychlost v zatáčkách a menší na rovinkách, nižší přítlak = nižší rychlost v zatáčkách a vyšší na rovinkách). Simulace množství paliva ve vozech (vliv jízdního stylu řidiče na spalování paliva (agresivní = rychlejší spalování paliva, konzervativní = pomalejší spalování), vliv množství paliva ve vozech na rychlost vozu (více paliva (těžší vůz) = pomalejší, méně paliva (lehčí vůz) = rychlejší) a simulace možnosti přidání tankování paliva během zastávek v boxech. Různé opotřebení jednotlivých pneumatik na voze závislé na různých nastaveních vozu (v mnou navrženém modelu se všechny pneumatiky opotřebovávají stejně a stejnou mírou, ve skutečnosti je však opotřebení pneumatik závislé na orientaci okruhu (pravotočivý/levotočivý) a na různých nastaveních vozu (přítlak předního/zadního přítlačného křídla, geometrie zavěšení, odemknutý/zamknutý diferenciál, brake bias (vyvážení brzd (přední vs zadní kola)), tlak v pneumatikách, tlak brzd, rozmístění hmotnosti (či umístění balastu), atd.)).&lt;br /&gt;
&lt;br /&gt;
: To řešení kolizí by mi v tom modelu připadalo jako poměrně podstatné. Jinak to ale vypadá dobře. '''Schváleno.''' [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 21:54, 5 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Simulace protestu Hnutí žlutých vest ==&lt;br /&gt;
----&lt;br /&gt;
'''Název simulace:''' Protest Hnutí žlutých vest&lt;br /&gt;
&lt;br /&gt;
'''Autor:''' Michaela Trnková&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu:''' Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj:''' NetLogo&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu:''' Předmětem simulace bude masová demonstrace francouzského Hnutí žlutých vest v pařížských ulicích. &lt;br /&gt;
&lt;br /&gt;
'''Průběh simulace:''' Prázdné náměstí se začne zaplňovat prvními demonstranty, až se rozroste na početnou skupinu. Protestující vyrazí ulicí, zprvu spořádaně, ale s přibývajícími demonstranty se rozlezou do více ulic. Někteří účastníci protestu začnou zapalovat ohně a ničit okolí, je proto nutný zásah policie, která použije slzný plyn, aby protestující rozehnala. Někteří se ale nedají a pustí se s policisty do potyčky. Část civilistů i policistů se zraní.&lt;br /&gt;
&lt;br /&gt;
Cílem je nasimulovat úprk demonstrantů po použití slzného plynu a boj s policisty té části demonstrantů, která před slzným plynem neuteče. &lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu:'''&lt;br /&gt;
* Počet protestujících: vzroste na 50 000&lt;br /&gt;
* Strategie/typ protestujícího: &lt;br /&gt;
 - Klidný: jde celou dobu v davu a ničeho se nedopustí &lt;br /&gt;
 - Agresivní: ničí okolí, zapaluje oheň&lt;br /&gt;
 - Bojovný: bojuje s policisty poté, co použili slzný plyn&lt;br /&gt;
 - Utíkající: uteče z protestu poté, co policisté použili slzný plyn&lt;br /&gt;
* Počet policistů: 200&lt;br /&gt;
* Typ policisty:&lt;br /&gt;
 - Plynař, který šíří slzný plyn&lt;br /&gt;
 - Zasahující, který bojuje s demonstranty&lt;br /&gt;
 - Přihlížející, který přímo nezasahuje&lt;br /&gt;
* Počet zraněných demonstrantů a policistů&lt;br /&gt;
* Rychlost demonstrantů jdoucí ulicemi&lt;br /&gt;
* Rychlost demonstrantů utíkajích před slzným plynem&lt;br /&gt;
* Doba, po kterou se slzný plyn šíří&lt;br /&gt;
* Rychlost šíření slzného plynu&lt;br /&gt;
* Počet ulic&lt;br /&gt;
* Délka a šíře ulic&lt;br /&gt;
&lt;br /&gt;
:Přijde mi to samoúčelné. Ta simulace by měla mít nějaký účel, měla by zodpovídat nějaký problém, ne jen vlastní vytvoření. Navíc pro realistickou simulace asi nebudete mít data. Zkuste o tom ještě popřemýšlet, prosím. [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 02:06, 6 May 2019 (CET)&lt;br /&gt;
:: Simulace může sledovat, jak docílit co nejnižších škod nebo nejméně zraněných nebo kolik je třeba policistů na takovou akci potřeba... Šlo by? Data (počet protestujících, policistů, zraněných atd.) jsou veřejně dostupná. Věci typu rychlost nebo délku či šíře ulic snad nemusí být 100% skutečné? [[User:Xtrnm15|Xtrnm15]] ([[User talk:Xtrnm15|talk]]) 21:03, 8 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Simulace reklamačního oddělení ==&lt;br /&gt;
----&lt;br /&gt;
'''Název''': Simulace reklamačního oddělení&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Pavel Gregor&lt;br /&gt;
&lt;br /&gt;
'''Nástroj''': Simprocess&lt;br /&gt;
&lt;br /&gt;
'''Předmět simulace''':&lt;br /&gt;
Firma poskytuje zákazníkovi službu a to takovou, že pokud se zákazníkovi zakoupené zboží jakkoli rozbije i vlastním zaviněním, dostane výměnou nový kus za stávající.&lt;br /&gt;
Vrácené jednotky pak procházejí testovacím procesem funkčnosti. Rozbité jednotky jsou přeposílány na rozebrání. Rozebrané jednotky se pak využijí na náhradní díly. Otestované jednotky, které projdou celým procesem, bez nalezené chyby jsou vráceny zpět do oběhu za sníženou cenu.&lt;br /&gt;
&lt;br /&gt;
Na každé pozici má operátor předepsaný počet jednotek, které musí v daném čase otestovat. V simulaci bude řešen počet jednotlivých operátorů na daných pozicích, aby nedocházelo k hromadění jednotek na některých z pozic, které jsou časově náročnější. Dále kolik je zapotřebí operátorů v závislosti na počtu přijatých jednotek.&lt;br /&gt;
Upravení počtu jednotek/h na jednotlivých pozicích k optimalizaci celého procesu.&lt;br /&gt;
&lt;br /&gt;
'''Modely simulace''':&lt;br /&gt;
&lt;br /&gt;
* Současná situace&lt;br /&gt;
* Optimalizace počtu operátorů závisející na denním příjmu jednotek (současný systém)&lt;br /&gt;
* Optimalizace počtu zpracovaných jednotek na jednotlivých pozicích z vlastních zkušeností&lt;br /&gt;
* Maximální možné vytížení na modelu č. 3 a kapacitě provozovny&lt;br /&gt;
&lt;br /&gt;
'''Popis procesu''':&lt;br /&gt;
&lt;br /&gt;
* Příjem jednotek&lt;br /&gt;
* Nahrání jednotek do systému + základní rozřazení dle hlášené chyby (2 kategorie – fyzické x sw poškození/chyba)&lt;br /&gt;
* Nabití všech jednotek (test baterie)&lt;br /&gt;
* Restore – Tovární nastavení jednotky&lt;br /&gt;
* Základní verifikace – ověření hlášené chyby zákazníkem&lt;br /&gt;
* SW kontrola funkce display + mechanická kontrola dotyku operátorem&lt;br /&gt;
* SW kontrola Audio – reproduktory + mikrofon&lt;br /&gt;
* Kontrola základních funkcí telefonu&lt;br /&gt;
* Test wifi (2,4 GHz, 5 GHz), Bluetooth, GPS&lt;br /&gt;
* Kontrola funkčnosti telefonické komunikace&lt;br /&gt;
* Vizuální kontrola jemného fyzického poškození&lt;br /&gt;
* Otevření jednotky a kontrola, zda nebyla jednota zasažena tekutinou&lt;br /&gt;
* Ověření, zda jednotka nebyla poškozena při otevření (opakují se body 6-10)&lt;br /&gt;
* Finální kontrola (vizuální kontrola + tovární nastavení)&lt;br /&gt;
* Očištění jednotek&lt;br /&gt;
* Balení&lt;br /&gt;
* Odeslání&lt;br /&gt;
&lt;br /&gt;
'''Schváleno''' [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 19:47, 8 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Simulace výběru nového zaměstnance ==&lt;br /&gt;
----&lt;br /&gt;
'''Název''': Simulace přijímání zaměstnance&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Martin Jirsa&lt;br /&gt;
&lt;br /&gt;
'''Nástroj''': Simprocess&lt;br /&gt;
&lt;br /&gt;
'''Předmět simulace''':&lt;br /&gt;
Proces výběru nového zaměstnance do malých a středních firem (SME). &lt;br /&gt;
Jak většina firem postupuje při výběru nového zaměstnance, vyřazení nerelevantních uchazečů, dále proces zařazení do užšího&lt;br /&gt;
výběru. Pokud se jedná o náročnější pozice s vyššími požadavky, potom vytvoření dvou a více kolových rozhodovacích pohovorů.&lt;br /&gt;
Ověření znalostí potencionálního uchazeče, nejenom z hlediska jeho tzv. &amp;quot;hard skills&amp;quot;, ale také &amp;quot;soft skills&amp;quot;, které jsou&lt;br /&gt;
v poslední době, čím dál více, také vyžadovány. Dále je testována schopnost pracovat v týmu, komunikativnost a další důležité vlastnosti,&lt;br /&gt;
které by uchazeč měl mít, aby byl schopen pracovat na větších, náročnějších projektech a tudíž dobře fungovat jako&lt;br /&gt;
součást většího celku.&lt;br /&gt;
&lt;br /&gt;
'''Modely simulace''':&lt;br /&gt;
&lt;br /&gt;
* Vyřazení nerelevantních uchazečů&lt;br /&gt;
* Rozhodování a optimalizace užšího výběru&lt;br /&gt;
* Otestování potřebných znalostí a dovedností&lt;br /&gt;
* Zařazení do vícefázového rozhodování&lt;br /&gt;
* Finální rozhodnutí výběru&lt;br /&gt;
&lt;br /&gt;
'''Popis procesu''':&lt;br /&gt;
&lt;br /&gt;
* Vyřazení nerelevantních uchazečů&lt;br /&gt;
* Kontaktování uchazečů, kteří jsou adekvátní pro požadovanou práci&lt;br /&gt;
* 1. fáze - přijímací, osobní rozhovor uchazeče s HR oddělením&lt;br /&gt;
* 2. fáze - testování odborných dovedností vybraných kandidátů, kteří přošli HR odd. a jsou vhodní pro požadovanou práci&lt;br /&gt;
* 3. fáze - finální pro uchazeče s nižšími požadavky na náročnost nabízené pozice, rozhovor s manažerem oddělení&lt;br /&gt;
* Další případná kola - rozhovor v cizím jazyce s manažery na vyšších pozicích, případně specialistou&lt;br /&gt;
* Závěrečná fáze - rozhovor s přímým nadřízeným&lt;br /&gt;
* Uzavření smluvních podmínek s vybraným kandidátem&lt;br /&gt;
* Nástup a zařazení zaměstnance do informačního systému a evidence&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': Jakým způsobem jsou vybíráni nově příchozí zaměstnanci do firem, a proč se někdy nestáváme těmi konečnými uchazeči právě třeba &amp;quot;my&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: Obávám se, že na toto téma lze diskrétní simulaci použít jen velmi těžko a to hlavně s ohledem na to, že jde téměř výhradně o měkké parametry. Velmi rychle narazíte na problém, že nebudete vědět, jak nastavit parametry modelu. [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 20:11, 8 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Simulace výběru pokladny na prodejně ==&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Simulace výběru pokladny na prodejně&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Jan Hazdra&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Diskrétní simulace&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': SIMPROCESS&lt;br /&gt;
&lt;br /&gt;
'''Definice problému''': Pracuji v Makru, jde o společnost zaměřenou na velkoobchodní prodej nejen potravinářského spotřebního zboží. V centrálním obchodě používáme několik různých typů pokladních systému a druhů pokladen. Jsou zde pokladny klasické s obsluhou, samoobslužné a nově v pilotním provozu tzv. scan pokladny. Ve skutečnosti jde pouze o váhu, samotné markování artiklů probíhá přes mobilní aplikaci. Váha pak jen několika způsoby porovnává obsah košíku s obsahem virtuálního namarkovaného košíku v aplikaci a při shodě přechází k placení.&lt;br /&gt;
&lt;br /&gt;
'''Metoda''': Problém bude řešen jako diskrétní simulace v programu Simprocess, jelikož jde o variaci na problém front, který se v Simprocessu řeší nejsnadněji. Při simulaci vycházím z reálných dat posbíraných za jeden den na jedné z prodejen v České Republice. Data se během jednotlivých dnů příliš neliší, proto budu vycházet ze vzorku z jednoho dne.&lt;br /&gt;
&lt;br /&gt;
'''Parametry''':&lt;br /&gt;
* typ pokladny&lt;br /&gt;
* počet pokladen&lt;br /&gt;
* zdržení na pokladně&lt;br /&gt;
* počet zákazníků&lt;br /&gt;
* doba strávené na prodejně&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': Nasimulovat běžný provoz prodejny s třemi druhy pokladních systémů, výsledky by mohly vést k optimalizaci procesu placení na pokladnách (změnit počet a poměr pokladen, zobrazit vytížení a další).&lt;br /&gt;
&lt;br /&gt;
: '''Schváleno''' [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 20:14, 8 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
== Meziměstská autobusová doprava ==&lt;br /&gt;
----&lt;br /&gt;
'''Název:''' Simulace meziměstské autobusové dopravy&lt;br /&gt;
&lt;br /&gt;
'''Autor:''' [[User:Zikl00|Zikl00]] ([[User talk:Zikl00|talk]]) 12:25, 8 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
'''Nástroj:''' Simprocess&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu:''' Diskrétní&lt;br /&gt;
&lt;br /&gt;
'''Popis modelu:''' Chceme založit dopravní společnost, která se bude zabývat meziměstskou autobusovou dopravou. Pomocí simulace budeme zjišťovat, do jakých měst se vyplatí &lt;br /&gt;
zavést autobusové linky společnosti. Konkurence se nebere v této úloze v úvahu.&lt;br /&gt;
Ve městech se generují pasažéři v závislosti na velikosti města, denní hodině a dni v týdnu. V simulaci půjde o ekonomické řízení podniku, kde se budou sledovat příjmy a &lt;br /&gt;
výdaje. Bude se zjišťovat, po jak dlouhé době se společnost dostane do černých čísel. Na začátku totiž musí pořídit několik autobusů. Dále musí platit své řidiče a náklady &lt;br /&gt;
na provoz autobusů. Aby přeprava byla výdělečná, bude záležet na počtu autobusů a časů, ve kterých jezdí. Autobusy mají danou kapacitu, opotřebení, fixní a variabilní &lt;br /&gt;
náklady na provoz. Sledovat se bude výdělečnost a ztrátovost přeprav.&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu:'''&lt;br /&gt;
* Počet cestujících na nádražích (denní hodina a den v týdnu)&lt;br /&gt;
* Velikost populace jednotlivých měst&lt;br /&gt;
* Vzdálenost mezi městy&lt;br /&gt;
* Počet autobusů&lt;br /&gt;
* Pořizovací cena jednoho autobusu&lt;br /&gt;
* Počet řidičů&lt;br /&gt;
* Náklady na provoz jednoho autobusu&lt;br /&gt;
* Náklady na jednoho řidiče&lt;br /&gt;
* Cena paliva&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace:''' Výsledky simulace budou sloužit jako podpora při rozhodování, zda autobusovou společnost založit, či nikoliv. Dále zjistíme, kolik je potřeba investovat &lt;br /&gt;
a za jak dlouho začne společnost vydělávat.&lt;br /&gt;
&lt;br /&gt;
: Téma samotné se mi líbí, upřesněte prosím ale, kde vezmete data. Bude jich potřeba docela dost. Kupříkladu vytíženost autobusů během dne/týdnu, celkové náklady na vlastnictví/provoz autobusů (údržba, lidské zdroje, redundance, palivo, amortizace, pojištění, atd...). Pokud máte hodnověrné zdroje, na základě kterých jste schopen takové parametry nastavit, tak je to super zadání. [[User:Tomáš|Tomáš]] ([[User talk:Tomáš|talk]]) 20:20, 8 May 2019 (CET)&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
	<entry>
		<id>http://www.simulace.info/index.php?title=Assignment_SS_2018/2019/cs&amp;diff=17893</id>
		<title>Assignment SS 2018/2019/cs</title>
		<link rel="alternate" type="text/html" href="http://www.simulace.info/index.php?title=Assignment_SS_2018/2019/cs&amp;diff=17893"/>
		<updated>2019-05-04T20:53:54Z</updated>

		<summary type="html">&lt;p&gt;Xkocj44: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Zadání LS 2018/2019}}&lt;br /&gt;
&lt;br /&gt;
{{Ambox&lt;br /&gt;
| text  = &amp;lt;div&amp;gt;&lt;br /&gt;
Na tuto stránku vkládejte svá zadání. Nezapomeňte se podepsat. Můžete použít &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; (čtyři tildy) k automatickému podpisu. Používejte Ukázat náhled, abyste si prohlédli Váš výsledek před konečným odesláním.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Ambox&lt;br /&gt;
| text  = &amp;lt;div&amp;gt;&lt;br /&gt;
Prosíme, snažte se formulovat Vaše zadání pečlive. S ohledem na to, že jde o Vaši semestrální práci, očekáváme adekvátní úsilí vynaložené na zadání. Nezapomeňte, že hlavním výsledkem má být výzkumná zpráva, což znamená, že Váš simulační model musí generovat takové výsledky, které jsou konkrétní, měřitelné a ověřitelné. Pečlivě promyslete, jakým způsobem budete vyvíjet Váš model, odvoďte entity, které budete používat, nakreslete si diagram modelu, zvažte, co budete měřit. Teprve pokud máte o modelu dostatečně přesnou představu, vložte Vaše zadání. A samozřejmě, nezapomeňte si prosím přečíst [[How to deal with the simulation assignment/cs|Jak na simulace]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Ambox&lt;br /&gt;
| type  = content&lt;br /&gt;
| text  = &amp;lt;div&amp;gt;&lt;br /&gt;
Abychom se vyhnuli případnému budoucímu nedorozumnění, prosíme, ověřte si, že máte tučné '''schváleno''' někde v našem komentáři pod Vaším zadání. Pokud tam není '''schváleno''', znamená to, že Vaše zadání dosud schváleno nebylo.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Simulace sjezdovky&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Michal Pokorný&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': Simulace pohybu lyžařů/snowboardistů na svahu. Účastníci simulace jsou nejdříve vyvezeni vlekem/ky na vrcholek svahu a následně v závislosti na svojí strategii sjedou svah dolů.&lt;br /&gt;
Simulace by řešila optimální počet a průchodnost vleků v závislosti na počtu účastníků (toto lze řešit výpočtem), počet nehod v závislosti na počtu vleků/účastníků a porovnání jednotlivých strategií účastníků (jejich rychlost) s pravděpodobností jejich srážky s jiným účastníkem.&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* Velikost svahu &lt;br /&gt;
* Počet účastníků&lt;br /&gt;
* Strategie (rychlost) účastníků&lt;br /&gt;
* Počet a rychlost vleků&lt;br /&gt;
&lt;br /&gt;
'''Možné rozšíření''': Úprk před lavinou, různé typy (rychlosti) sjezdovek, možnost pádu účastníka bez srážky s jiným účastníkem, různé obtížnosti sjezdovek (vyšší četnost pádů), vliv strategie na četnost pádů&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Simulace šíření spalniček&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Jurij Povoroznyk, povj01&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': V České republice propukla epidemie spalniček. Tato nemoc se k nám dostal od cestovatele z Indie přímo do hlavního města Prahy. Celkově bylo nakaženo 2 000 lidí a další lidé rychle přibývají. Nakažený jedinci jsou z různých věkových kategorií. Přičemž děti v rozmezí 3–5 let jsou na tuto nemoc náchylnější a můžou této nemoci rychle podlehnout, dokonce umřít pokud nejsou již očkování. Očkovat dítě je možné minimálně od 1 roku života. Bylo zjištěno, že z celého souboru nebylo očkováno ani jednou dávkou vakcíny 39 % osob. Dvěma dávkami vakcíny bylo očkováno 42 % nakažených. Onemocnění se projevuje horečkou, rýmou, kašlem, slzícíma očima a na bukální sliznici jsou bělavé tečky se zarudlým okolím. Virus spalniček se přenáší kapénkovou infekcí. Inkubační doba spalniček je 6–19 dní, průměrně 13 dní. Infikovaní lidé jsou nakažliví ještě 4 až 5 dní před propuknutím této nemoci. Úmrtnost je velmi malá, 3 smrti z 1 000 případů. U dětí, které nedostali vakcínu a jsou nakažený touto chorobou je patřičně větší.&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* Počet infikovaných &lt;br /&gt;
* Počet zdravých&lt;br /&gt;
* Počet jedinců z různých věkových kategorií&lt;br /&gt;
* Očkovaných jednou vakcínou, dvěma nebo žádnou&lt;br /&gt;
* Počet mrtvých&lt;br /&gt;
* Těžce nemocný jedinci&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': Cílem tohoto modelu je určit a sledovat průběh této epidemie. Zároveň pomocí tohoto modelu lze určit, jak budou na tuto epidemii reagovat různé věkové kategorie a počet vakcín obdržených před vypuknutím epidemie. Údaje získané z této simulace by měly přesvědčit rodiče k očkování svých děti ihned jak to bude možné. &lt;br /&gt;
&lt;br /&gt;
'''Možnosti rozšíření''': Model lze rozšířit o konkrétnější data - např.: typ vakcíny, absolvovaná karanténa nebo počet zdravých jedinců v rodině. Celkově se model rozšíří pokud budou adekvátní přibližná data a statistiky propuklé epidemie. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Modelace populačního vývoje&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Josef Čekan, cekj01&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Systémově dynamický&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': Vensim&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': Vlivy na stav populace v příštích letech se každým rokem mění, tudíž vytvořit permanentně přesný model vývoje populace není zcela možné. Zároveň existují faktory, které nelze jednoduše předpokládat jako například některé přírodní katastrofy či vypuknutí epidemií nemocí či válečného konfliktu. Můžeme však vytvořit model na základě vlivů, které částečně předpověditelné jsou. V tomto modelu bude na základě dat o porodnosti, úmrtnosti a migraci porovnán vývoj populace na jednotlivých kontinentech. Model tedy bude vývoj populace stavět na datech o porodnosti, úmrtnosti a mezinárodní migraci.&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* Populace &lt;br /&gt;
* Migrace&lt;br /&gt;
* Míra porodnosti, úmrtnosti a počet migrantů&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': Na základě získaných dat předpovědět populační vývoj a porovnat jej na úrovni kontinentů.  &lt;br /&gt;
&lt;br /&gt;
'''Možnosti rozšíření''': Model lze více konkretizovat (snížit abstrakci) při uvážení věkového rozdělení populace a migrantů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::Zdravím, úloha je to pro Vensim jak dělaná a opora v reálných datech žádaná. Chtělo by ji ale rozvinout, jelikož systémová dynamika je založená na zpětných vazbách, tak aby ty vazby v tomto modelu nebyly jen jednosměrné vazby a hlavně je třeba do toho přidat faktory nahodilosti. Dalé např. migrace je až důsledek nějakho fenoménu - hlad, válka( bezpečnost) atp. Takže migrace, míra porodnosti a úmrtnosti jako endogenní proměné dobrý, ale simulaci je třeba rozšířit i o parametry, které tyto proměné ovliňují (vlastně nastavují/spouští). Všechny tyto jevy mají zase nějaké proti reakce (právě ty zpětné smyčky), které daný fenomn brzdí např. růst imigrace -&amp;gt; růst kriminality -&amp;gt; snaha zamezit imigraci. Pokud to tak bude tak pak '''schváleno'''. Pokud ne, tak u hodnocení budu dost nekompromisní.[[User:Oleg.Svatos|Oleg.Svatos]] ([[User talk:Oleg.Svatos|talk]]) 12:34, 4 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Simulace Japonské aukce&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. Dominik Turák, turd01&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Multiagentní&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': NetLogo&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': &lt;br /&gt;
* Japonská aukce je, podobně jako anglická, aukcí se zvyšující se cenou. Na rozdíl od anglické aukce zvyšování ceny nevyhlašují účastníci, ale vyvolávač. Účastníci ochotní kupovat na začátku stojí, vyvolávač postupně hlásí vyšší a vyšší cenu, kdo z účastníků již není ochoten tolik zaplatit, dá to najevo usednutím. Kdo jednou usedl, nesmí se znovu do téže dražby zapojit; tímto rysem se japonská aukce liší od anglické po strategické stránce (anglická verze umožňuje zvýšit příhoz i těm, kteří dočasně nepřihazovali). &lt;br /&gt;
&lt;br /&gt;
* Tento model bude obsahovať 50 účastníkov aukce, 1 vyvolávača cien a 20 vopred určených starožitností s ich minimálnou požadovanou cenou&lt;br /&gt;
&lt;br /&gt;
* starožitnosti budú objekty, ktoré:&lt;br /&gt;
** budú mať vopred stanovenú cenu v intervale &amp;lt;500 000, 2 000 000&amp;gt;&lt;br /&gt;
** budú určitého typu náhodne zvolenom z týchto 5 typov:&lt;br /&gt;
*** Váza&lt;br /&gt;
*** Kniha&lt;br /&gt;
*** Lampa&lt;br /&gt;
*** Skriňa&lt;br /&gt;
*** Obraz&lt;br /&gt;
** ich meno sa bude skladať z 2 alebo viacerých slov, pričom prvé slovo bude stále určovať typ&lt;br /&gt;
&lt;br /&gt;
* vyvolávač bude 1 špeciálny agent, ktorý:&lt;br /&gt;
** začne na 90% požadovanej ceny za danú vec&lt;br /&gt;
** cenu postupne zvyšuje o 5%&lt;br /&gt;
** interval oznámenia zvýšenia ceny je určený náhodne v intervale 30-60 sekúnd&lt;br /&gt;
** každých 30 sekúnd oznámi gong =&amp;gt; účastníci budú vedieť že cena sa každú chvíľu zvýši&lt;br /&gt;
&lt;br /&gt;
* Každý účastník bude jeden agent:&lt;br /&gt;
** TODO&lt;br /&gt;
** bude zároveň aj obchodník, čo znamená že bude vedieť odhadnúť cenu tovaru =&amp;gt; neposadí sa hneď, ako začne aukcia ak sa práve nedraží jedna z jeho vyhliadnutých vecí&lt;br /&gt;
** finančný kapitál v intervale &amp;lt;1 500 000, 2 000 000&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* 1 vyvolávač cien + 20 starožitností a ich ceny&lt;br /&gt;
* 50 účastníku + 7 náhodne zvolených starožitností pre každého z nich&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': Simulovať priebeh aukcie a ukázať vplyvy rôznych faktorov na finálnu cenu produktov. Ukázať nadhodnotenú cenu produktov pri aukciách a sledovať reakcie agentov na akcie iných agentov.&lt;br /&gt;
&lt;br /&gt;
'''Možnosti rozšíření''': Na výber viac typov aukcí, nastavenie počtu zákazníkov&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Název simulace''': Simulace programového rezultátu politických stran&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Bc. David Lisý, xlisd05&lt;br /&gt;
&lt;br /&gt;
'''Typ modelu''': Systémová dynamika&lt;br /&gt;
&lt;br /&gt;
'''Modelovací nástroj''': Vensim&lt;br /&gt;
&lt;br /&gt;
'''Popis Modelu''': Cílem simulace by bylo odhadnout jak by vypadal programový rezultát na základě různých výsledků voleb do poslanecké sněmovny. Kupříkladu když vyhrajou drtivou většinou piráti, tak by legalizace marihuany proběhla na 100%. Kdyby měli jen půlku poslanců tak kupříkladu legalizace proběhne na 50%. Když se do PS nedostanou vůbec, tak 0. Rád bych kombinoval, takže když například ANO bude mít 50%,TOP09 10% a Svobodní 30%, Radostné Česko 10% tak třeba vystoupení z EU se spíše neuskuteční&lt;br /&gt;
&lt;br /&gt;
'''Parametry modelu''':&lt;br /&gt;
* počet politických stran&lt;br /&gt;
* cíle politických stran&lt;br /&gt;
* počet aktivních voličů&lt;br /&gt;
* počet získaných hlasů&lt;br /&gt;
&lt;br /&gt;
'''Cíl simulace''': Zjistit výsledek programového rezultátu politických stran&lt;br /&gt;
&lt;br /&gt;
'''Možnosti rozšíření''': &lt;br /&gt;
&lt;br /&gt;
:: Zdravím, úplně v tom simulaci nevidím, jen vlastně vrhnete kostkama a podle nějakých smyšlených pravidel intepretujete výsledek. Pro koho by taková kalkulace reálně byla? Byl bych pro to abyste šel do nějakého reálnějšího tématu, kde pro kvatifikaci vztahů najdete nějakou oporu v realitě a jejíž výsledky je možné poměřit s realitou. Tady by mohlo vyjít cokoliv, jelikož výsledek voleb a jeho zrealizování nedokáže odhadnout nikdo.[[User:Oleg.Svatos|Oleg.Svatos]] ([[User talk:Oleg.Svatos|talk]]) 12:19, 4 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''Název''': Vytíženost posilovny&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Martin Matějka, xmatm82&lt;br /&gt;
&lt;br /&gt;
'''Nástroj''': SIMPROCESS&lt;br /&gt;
&lt;br /&gt;
'''Metoda''': Monte Carlo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definice problému''': &lt;br /&gt;
V dnešní době je velice populární zajít si zacvičit nebo se jen tak protáhnout do pohodlné, hezky vybavené posilovny. Jelikož je tento způsob cvičení v dnešní době tak populární, je dobré vědět, jak si na tom určitá posilovna stojí z hlediska schopnosti pokrytí návševnosti. Jak z pohledu zákazníka, tak i provozního, co by mohl zlepšit.  Mají dostatek místa? Dostatek nástrojů či pomůcek na posílování? Mají všichni možnost se dojít osprchovat bez delšího čekání nebo nevázne to hnedka u vchodu při koupi vstupenky?  &lt;br /&gt;
&lt;br /&gt;
'''Metoda''':&lt;br /&gt;
V simulaci bude zahrnuta spousta entit, které budou mít na výsledné hodnoty vliv (druh zákazníka, doba návštěvy..), ale jednou z nejdůležitějčích entit je množství a frekvence návševníků přicházející do posilovny. Pro generování návštěvníků bude použit určitý algoritmus, který bude produkovat náhodná čísla, ale také bude zahrnovat učité hodnoty ze známého chování návštěvníků. Například, že v dopoledních hodinách je nevštěvnost o něco měnší a nebo o víkendech zase vyšší. Pro zanalyzování vytíženosti posilovny v čase je Monte Carlo dobrá volba.&lt;br /&gt;
&lt;br /&gt;
::Zdravím, co všechno by byly tedy náhodné proměné? Na základě jakých reálných dat budete odvozovat jejich pravděpodobnostní rozdělení? (data a odvození pravděpodobnostních rozdělení musí být součástí vypracované simulace). Jak přesně bude simulace fungovat? Pozor na to, že pokud chce simulovat čekání a fronty, tak na to je Simprocess nebo případně Vensim. [[User:Oleg.Svatos|Oleg.Svatos]] ([[User talk:Oleg.Svatos|talk]]) 12:11, 4 May 2019 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''Název''': Spotřeba surovin ve fastfoodu&lt;br /&gt;
&lt;br /&gt;
'''Autor''': Josef Kočí&lt;br /&gt;
&lt;br /&gt;
'''Nástroj''': Simprocess&lt;br /&gt;
&lt;br /&gt;
'''Definice modelu''':&lt;br /&gt;
Protože již 4 roky pracuji ve společnosti AmRest, z pozice hlavního instruktora mám přístup k manažerským systémům, kde lze sledovat data o prodeji, počtu objednávek v různých hodinách a spotřebu jednotlivých ingrediencí. Mým cílem je část této reality zachytit v programu Simprocess, zobrazit v něm proces na jednotlivých ingrediencích, jejich objednání a naskladnění ráno, jejich průběžné vyskladňování, použití do procesu až k vydání zákazníkům. Proces tak zachytí, kolik dle simulací průměrně zůstává nevyužitých ingrediencí, jak dlouho přibližně zákazníci čekají a pokusím se případně i o analýzu zlepšení tzv. SOS (Speed of Service).&lt;br /&gt;
&lt;br /&gt;
'''Data''':&lt;br /&gt;
Vstupní data jako množství zákazníků v jednotlivých hodinách či spotřeba ingrediencí sice budou náhodná (avšak vzájemně spolupracující), nicméně budu vycházet z reálných dat z manažerských systémů tak, aby počty objednávek na různé hodiny přibližně seděly.&lt;/div&gt;</summary>
		<author><name>Xkocj44</name></author>
		
	</entry>
</feed>