Portál AbcLinuxu, 10. května 2025 04:57

Dotaz: 1270MB nahodných dat

29.11.2015 11:54 E-liska
1270MB nahodných dat
Přečteno: 656×
Odpovědět | Admin
Ahoj, potřebuji v pythonovém programu 1270MB náhodných bitů, tak aby byly skutečně náhodné (mohly se tam vyskytnout všechny možné pořadí bitů se stejnou pravděpodobností atd.). Předpokládám, že pseudonáhodný generátor to nezajistí, protože se opakuje. Jak toho docílit, abych si mohla být jistá náhodností dat? Kostkou se mi to házet nece.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.11.2015 12:00 Radek
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
skus srand(time()). Na zacatku programu zavolej funkci srand, tim se posune zacatek pseudonahodneho generatoru. Nejčasteji se používá čas
srand(time())
for(){
nahodna_hodnota = rand(); }
Heron avatar 29.11.2015 12:29 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud nemáte speciální hw na generování náhodných dat, tak si je ani python z prstu nevycucá. Standardní zdroj skutečně náhodných dat je /dev/random, ale je to velmi pomalé (na ten 1GB se načekáte). Jako taková domácí náhrada zdroje náhody se dá použít zvukovka a dostatečně zašumělý zdroj zvuku (nebo si takový postavit, jsou to 4 součástky). Potom nasnímat raw data ze zvukovky a po částech prohnat nějakou dobrou kryptografickou hash fcí. To je asi nejsnadnější způsob, jak doma získat dostatek náhodných dat lepších než z kongruentních generátorů.
Heron
29.11.2015 12:46 E-liska
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
A dá se takový hw koupit? V Alze asi nee. Nejsem zrovna kamarádka s pájkou :). Případně prosím nějaký podrobnější návod na použití té zvukovky.
29.11.2015 13:19 Charon
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Pak si tedy pořiďte profi generátor náhodných čísel-> http://www.psyleron.com/reg1.aspx Po pročtení jejich stránek zjistíte, že neexistuje nic lepšího než tento generátor z Princeton.
29.11.2015 13:23 E-liska
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
:-/
1.12.2015 17:42 Radovan
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Jsou i jiné metody, například tahle: Dice-O-Matic ;-)
29.11.2015 16:12 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Udělat zdroj "dostatečně" bílého šumu je hodně těžké, a přes zvukovku v PC skoro nemožné. Kdybych ho ale měl, tak není žádný důvod cpát to dál do hashovací funkce, spíš je to naopak nevhodné.

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?

Ty víceméně předpokládáš, že "dobrý" resp. "lepší" znamená nepredikovatelný, ale to podle mě tazatelka ani nežádala.
Heron avatar 29.11.2015 18:56 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
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í.

29.11.2015 16:04 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pseudonáhodný generátor má nějakou periodu danou použitým algoritmem (a případně počátečním stavem). 10^10 (tj. i kdybys z každého kroku chtěla vyrobit jen 1 bit do výstupu) není obecně problém.

První a nejdůležitější otázka je, k čemu ty hodnoty potřebuješ (co je pro tebe "skutečně náhodné" :). Pokud by to bylo jen pokrýt prostor všech n-tic bitů, tak to můžeš rovnou generovat jako sekvenci bez jakékoliv (pseudo)náhody (zhruba řečeno). Pokud chceš něco jiného, je potřeba vědět co a na základě požadavků vybrat vhodný algoritmus. Klidně začni na https://en.wikipedia.org/wiki/Pseudorandom_number_generator a pokračuj přes různé odkazy tam.

Hardwarový fyzikální generátor má jedinou podstatnou výhodu v nepredikovatelnosti, pokud to není potřeba (což kromě kryptografie není snad nikdy), tak budou "počítaná" čísla jednodušší a lepší.
Heron avatar 29.11.2015 19:00 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
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).
29.11.2015 19:14 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Jasně, ale to není o nepredikovatelnosti, ale statistických vlastnostech výstupu. Kde se dají najít/vybrat algoritmy, které potřebné vlastnosti splňují. Naopak při snaze postavit HW generátor a případně dál kouzlit s výstupem je podle mě (bez toho, aby člověk fakt věděl co dělá a hodně si s tím hrál) šance na nějaké podobné artefakty mnohem větší. U známých algoritmů je výhoda, že se dají analýzy od lidí, kteří tomu rozumí najít a jednoduše si přečíst výsledek. :)
1.12.2015 18:51 Stolicovací šrotice
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Ty jo, při generování náhodného šumu (postprocessor v Mplayeru, filtry v avisynth, random dithering) jsem se s nějakým vzorem ještě nikdy nesetkal, a to se na takové účely určitě nepoužívají žádné ani trochu pokročilé algoritmy.
29.11.2015 16:50 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nijak. Ale môžeš si to vypočuť. play -n synth 60:00 whitenoise
29.11.2015 17:32 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak již psal Marble, podstatné je k čemu se tyto náhodná data potřebují. V 99,9% případů jsou data s dobrých pseudonáhodných generátorů dostatečné, protože se chovají statisticky jako "správná" náhodná data, to znamená statistické vlastnosti jednotlivých bitů (bytů, dvojic, n-tic) mají takové, jaké by náhodný generátor měl mít. To že jsou predikovatelné, známe-li počáteční seedy generátoru, nehraje roli, pokud data potřebuji na statistické analýzy čehokoliv. Pokud jsou data pro kryptografii, je třeba větší opatrnosti, ale i tak se v v naprosté většině případů i v kryptu generují pseudonáhodná čísla.
kyknos avatar 29.11.2015 18:15 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
problem pseudonahodneho generatoru spociva v tom, ze se opakuje v cyklech, coz muze v nekterych pripadech vadit (viz napr. primo pythoni dokumentace:)
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
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
kyknos avatar 29.11.2015 18:16 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
Rozbalit Rozbalit vše Re: 1270MB nahodných dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
opravdova nahodna csla, se daji stahnout tu
So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.