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. 5)
 
Jarin's   
13.08.2019 21:25
Bydliště: Zádveřice-Raková
947 141 903 
  Adam napsal(a):    ....Ono už jenom tím, že micros() v jednoduché proceduře generování náhodného čísla musí skákat po nějakém konstantním číslu, by mělo varovat, že to asi nebude moc šťastné řešení. .....

Adame, je mi líto, že se pouštíš do debaty o věci, se kterou očividně nemáš mnoho zkušeností. Nakonec mě , profesionálovi v oboru, věřit nemusíš. Než ale napíšeš nejakou hloupost, tak si o tom problému něco nastuduj, Třeba pak uvěříš jiným profesionálům.
Tady je velmi dobrý materiál
https://www.codeproject.com/Articles/1083372/Random-Number-Generator-Recommendations-for-Applic

Podotýkám, že implementace C a C++ pro platformu AVR používá PRNG generátor.
Pro ty kdo se nehodlají probírat velmi složitým dokumentem, vytáhnu pár bodů.

.....Wildly Varying Seeds
For noncryptographic and seeded PRNGs, an application ought to generate seeds likely to vary wildly from previously generated seeds, to reduce the risk of correlated "random" numbers or sequences. In this sense, the following kinds of seeds are preferred, from most to least:

A bit sequence from a cryptographic RNG.
A seed extracted from hard-to-predict sources (see "Seed Generation" above).
A hash generated using several timestamps and additional data chosen by the application. Here, timestamps with finer than millisecond granularity (including CPU cycle counters) are preferred........

zde je tedy jasné, že použití funkce micros() i když ve zjednodušení pro daný příklad, tedy rozlišení na mikrosekundy není, jak píšeš " není moc šťastné řešení".

Statistical RNGs: Requirements......
.
.
If a statistical RNG implementation uses a PRNG, the following requirements apply......
.
.
Before an instance of the RNG generates a random number, it MUST have been initialized ("seeded") with a seed described as follows. The seed—


jednoznačně tedy musí být před každým použitím inicializován.....

Jak píšu. mi věřit nemusíš a je mi úplně jedno, jak si budeš své generátory náhody programovat. Na počátku celé diskuze jsem se ti snažil ukázat, jak to programuje většina ostatního světa, tedy programátorů. Samozřejmě si nemusíš těchto doporučení všímat, nakonec je to tvůj kód, a můžeš si to psát po svém.
Dobrý programátor se nepozná jen podle skvěle napsaného kódu, ale i podle toho, že dokáže přijmout informaci prověřenou miliardami řádků kódu od ostatních programátorů.

PS: pokud ti vadí že by začal stejně, pak co jsem psal o resetu je skutečnost i když se ti to nezdá. Tvé řešení může krátkodobě vypadat lépe nebo na jedno spuštění, ale pokud se bavíme o tom, že Arduino poběží několik dnů týdnů či měsíců bez výpadku napájení, je to úplně o něčem jiném, O celkové koncepčnosti byla moje, pravděpodobně pro tebe, úplně zbytečná rada.
Víc k tomu celému není co dodat. Já se budu i nadále ve svých projektech držet mnoha lety ověřených doporučení. Ty samozřejmě nemusíš a nemusíš ani dát na mě.....
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