Jump to content
jirkasta

"Benchmark" náhodných čísel v jazyce PHP

Recommended Posts

Zní to úplně retardovaně? To máte pravdu. :D Ale nevzniklo to úplně úmyslně. Chtěl jsem zase zkusit po delší době něco napsat v PHP (webový programovací jazyk) a mezitím jsem náhodným brouzdáním po netu narazil na Wikipedii na štastná čísla, což je matematický pojem. Řekl jsem si, že by to mohlo být fajn na napsání prográmku schopného určit, zda je číslo šťastné nebo ne a pustil jsem se do toho. Výsledný kód má asi 75 řádků a když jsem ho po různu testoval, napadla mě při pohledu na vypočítaný poměr šťastných/nešťastných čísel myšlenka, že by vůbec nemuselo být od věci vyzkoušet kvalitu určování náhodných čísel v tomto jazyce. Jestli opravdu dokáže spolehlivě házet náhodná čísla tak, aby se co nejméně opakovala. Udělal jsem proto přes tento skript výpočet 3 milionů čísel popořadě, abych zjistil, jak to má správně být a poté 5 pokusů s jejich algoritmem na určování náhodných čísel (rand(1,3000000)). Výsledky jsou poměrně překvapivé.

  • První pokus: Štastných je 424320, neštastných 2575679
  • Druhý pokus: Štastných je 424347, neštastných 2575652

  • Třetí pokus: Štastných je 424360, neštastných 2575639

  • Čtvrtý pokus: Štastných je 424358, neštastných 2575641

  • Pátý pokus: Štastných je 424342, neštastných 2575657

  • Přesný počet (popořadě): Štastných je 423860, neštastných 2576139

Z tohoto vidíme, že má algoritmus odchylku jen o nějaké stovky, což je v případě množiny několik milionů potěšující zpráva. Až tedy budete potřebovat náhodná čísla nebo náhodně přiřazovat skrze to nějaké prvky, nemusíte se bát, že by měl příliš velkou odchylku a že by se nějaký prvek například zobrazoval méně než ostatní. :) 

Editoval(a) jirkasta

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatních sítích

Hmmm... jsem na tomhle příspěvku už asi po 4. A Čím dál, tím víc přemýšlím, že udělám stejnej pokus i v c#.... 

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatních sítích
Před 18 hodinami, Dangel napsal(a):

Hmmm... jsem na tomhle příspěvku už asi po 4. A Čím dál, tím víc přemýšlím, že udělám stejnej pokus i v c#.... 

@milanfon, prej ptákovina... Už to jiní zkouší i na jiný jazyky :D:D 

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatních sítích
Před 19 hodinami, Dangel napsal(a):

Hmmm... jsem na tomhle příspěvku už asi po 4. A Čím dál, tím víc přemýšlím, že udělám stejnej pokus i v c#.... 

Ty to můžeš udělat v C++ a rozjet to přes CUDA na grafice, nebo ještě lépe to rozjet jak na CPU tak na grafice :D

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatních sítích
Před 1 minutou, milanfon napsal(a):

Ty to můžeš udělat v C++ a rozjet to přes CUDA na grafice, nebo ještě lépe to rozjet jak na CPU tak na grafice :D

A to by mohl otestovat mnohem víc čísel, ne jen 3 miliony :D 

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatních sítích
Před 6 hodinami, jirkasta napsal(a):

@milanfon, prej ptákovina... Už to jiní zkouší i na jiný jazyky :D:D 

No... Tam je ten problém... Ona je to taková ptákovina, že mě to láká čím dál tím víc :D

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatních sítích

Ke komentování se musíte přihlásit nebo si vytvořit účet

K zanechání komentáře musíte být člen

Vytvořit účet

Vytvořte si nový účet v naší komunitě.

Zaregistrovat se

Přihlásit se

Už máte účet? Přihlašte se zde.

Přihlásit se teď

×
×
  • Create New...