Hlavní přehled   |   Info a nápověda Přihlásit   |   Registrovat
 
 
Příspěvek umístěný v tematickém vlákně:    Arduino, mikrokontroléry, mikropočítače   (str. 3)
 
Adam   
11.08.2019 10:56
Bydliště: Praha
5815 563 5854 
  Jarin's napsal(a):    ... randomSeed(analogRead(0)); přehodíš do smyčky Loop() ... ... ... 100% RANDOM void loop() { randomSeed(micros()); ...

Kdepak...
 
Nevím, jestli sis to zkoušel někdy v praxi, ale přemístění funkce randomSeed() do procedury loop(),
nebo i to použití randomSeed(micros()), situaci jen zhoršuje.

Opakovaně volaný randomSeed(micros())
v určitém ohledu nahodilost zcela zabíjí - funkce generuje pořád zcela stejnou posloupnost čísel (stále stejnou při každém resetu Arduina).
Současně neposkytuje dobrou rovnováhu náhodných čísel, protože třeba i po 1 milionu tahů náhodného čísla z rozsahu 0-10 byla průměrná hodnota všech 5,100.

Opakovaně volaný randomSeed(analogRead())
způsobuje ještě větší malér - už po několika tazích přestane vybírat z celého rozsahu 0-10
a začne tahat jen 3-4 čísla z něj a později jen 1-2.


Jak jsem psal v tom příspěvku s grafem, tak to klasické použití, kdy randomSeed() je voláno jen jednou na začátku programu a kdy jeho argumentem je analogRead(), dává velice slušné a vyvážené výsledky, že jsem byl až překvapen.

Když se to budeme snažit ještě nějak vylepšit, akorát se můžeme dopustit nějaké matematické rezonance
nebo interference, obrazně řečeno a z toho dobrého vyladění to akorát vyhodíme.
Nakonec, vždycky to budou jen pseudonáhodná čísla...
Zvláštní ocenění za úsilí nebo přínosPozitivní ohlasyOznačit příspěvek
  Přejít na příspěvek do vlákna      

 
 
Omforum.cz   |   Nápověda   |   Pravidla fóra   |   Podpořte chod fóra   |   Vytvořil: 2015-2024 Adam Benda
 
 
CC BY-NC-ND 3.0 CZ
Licence Creative Commons
Toto dílo podléhá licenci Creative Commons Uveďte původ-Neužívejte komerčně-Nezpracovávejte 3.0 Česká republika License