2011-01-31 10 views
14

Poszukuję programu lub biblioteki w Javie, która potrafi znaleźć nieprzypadkowe właściwości sekwencji bajtów. Coś, gdy dostaje się ogromny plik, uruchamia niektóre testy statystyczne i raporty, jeśli dane pokazują jakiekolwiek prawidłowości.Czy istnieje oprogramowanie do testowania sekwencji dla nielosowości w Javie?

Znam trzy takie programy, ale nie w Javie. Próbowałem ich wszystkich, ale tak naprawdę nie działają one dla mnie (co jest dość zaskakujące, ponieważ jeden z nich jest przez NIST). Najstarszy z nich, diehard, działa dobrze, ale jest nieco trudny w użyciu.

+0

Co Test ty specjalnie chce uruchomić? – jzd

+4

Dlaczego musisz to wiedzieć? Czy próbujesz sprawdzić, czy plik może być dalej skompresowany? To świetne pytanie, jestem po prostu ciekawy. : D –

+3

http://cstheory.stackexchange.com/questions/569/best-way-to-determine-if-a-list-of-bytes-are-random –

Odpowiedz

4

Jak stwierdzili niektórzy komentatorzy, jest to naprawdę problem matematyki eksperta. Najprostszym wyjaśnieniem może znajdę dla ciebie jest:

Run Tests for Non-randomness

Autocorrelation

To ciekawe, ale jak się używa „orzeł czy reszka” uproszczenie jej przykładem, znajdziesz trzeba iść znacznie głębiej zastosować tę samą teorię do szyfrowania/kryptografii itd. - ale to dobry początek.

+0

Z tych, o których mowa na tej stronie, autokorelacja jest prawdopodobnie najłatwiejsza do wdrożenia. – biziclop

+0

@biziclop: Dzięki, dodałem bezpośredni link do mojej odpowiedzi. – Mikaveli

1

Innym podejściem byłoby użycie Fuzzy logic. Można wyodrębnić rozmyte reguły asocjacyjne ze zbiorów danych. Zasady te są w zasadzie konsekwencje w postaci:

jeżeli A, to B, interpretowany na przykład „jeśli 01101 (jest obecny), a następnie 1111 (nastąpi)”

Googling „rozmytej eksploracji danych”/"wydobywające rozmytej asocjacyjne zasady "powinno dać ci więcej niż wystarczające wyniki.

Twoja domena problemowa jest całkiem spora, ponieważ właśnie o to chodzi w eksploracji danych/tekstu. To i statystyczna analiza kombinatoryczna &, żeby wymienić tylko kilka.

O programie, który to robi - spójrz na this.

1

Nie tyle odpowiedź na twoje pytanie, ale do twojego komentarza, że ​​"any observable pattern is bad". Co sprawiło, że pomyślałem, że przypadkowość nie jest problemem, ale raczej obserwowalnym wzorcem, i aby poradzić sobie z tym problemem, z pewnością potrzebujesz obserwatorów. Krótko mówiąc, po prostu skonfiguruj stronę internetową i skorzystaj z crowdsource.

Kilka przykładów tej techniki stosowane do barwienia nazewnictwa: http://blog.xkcd.com/2010/05/03/color-survey-results/ i http://www.hpl.hp.com/personal/Nathan_Moroney/color-name-hpl.html

Powiązane problemy