Portál AbcLinuxu, 10. května 2025 04:57
srand(time())
for(){
nahodna_hodnota = rand();
}
Udělat zdroj "dostatečně" bílého šumu je hodně těžké, a přes zvukovku v PC skoro nemožné.
Ano, já jsem také psal Jako taková domácí náhrada zdroje náhody. Od dvou tranzistorů (z toho jeden v roli zenerky), nelze očekávat zázraky.
Pokud ale budu mít funkci, co mi umí vstup "náhodně" rozházet (ať už to znamená cokoliv) -- což nicméně není standardní požadavek na dobrou kryptografickou hashovací funkci, tak se mohu vykašlat na pájení a zvukovku a protě ji krmit sekvencí od jedničky dál, ne?Ta hashovací fce je tam pro rovnoměrnou distribuci hodnot přes celý rozsah. I kdybych měl náhodný signál na line-in, tak jen těžko dosáhnu přesné úrovně tak, aby všechny bity (16 nebo 24) byly využité. Horní bity prakticky nebudou, takže z "náhodné" hodnoty 24b může být ve slabší chvilce třeba jen 8 (pokud bude signál hodně slabý a obsluha si nedá pozor). Dobrá hashovací fce se chová jako náhodné orákulum, takže by měla pokrývat celé spektrum (pokud by nepokrývala, tak je to její oslabení).
Ty víceméně předpokládáš, že "dobrý" resp. "lepší" znamená nepredikovatelný, ale to podle mě tazatelka ani nežádala.
Tazatelka napsala, že chce skutečně náhodné hodnoty a ví, že pseudonáhodné generátory jí stačit nebudou. Takže sama automaticky vyřazuje kongruentní generátory. Pokud nechce kupovat hw za (sta)tisíce se skutečnými vyváženými generátory, tak jsem ji poradil relativně jednoduché a levné řešení.
pokud to není potřeba (což kromě kryptografie není snad nikdy), tak budou "počítaná" čísla jednodušší a lepšíTřeba numerické metody Monte Carlo. I při generování "náhodného šumu" do obrázků se perioda může trefit velmi nevhodně na sloupce a potom to vypadá velmi rušivě (jako vzor, nikoliv šum).
play -n synth 60:00 whitenoise
random.shuffle(x[, random])¶ Shuffle the sequence x in place. The optional argument random is a 0-argument function returning a random float in [0.0, 1.0); by default, this is the function random(). Note that for even rather small len(x), the total number of permutations of x is larger than the period of most random number generators; this implies that most permutations of a long sequence can never be generated.pokud je ale potreba "jen" gigabajt dat, tak to mersenne twister, pouzivany pythonem, imho zvladne, aniz by prekrocil periodu (opravte me, jestli se mylim, nechce se mi to googlit a pocitat), problem s temi permutacemi je, ze jich je perverzne moc
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.