Prawdziwe losowe generowanie w Javie

Czytałam matematykę.random () javadoc i zobaczyłem, że random jest tylko psuedorandom.

Czy istnieje Biblioteka (konkretnie java), która generuje liczby losowe według zmiennych losowych, takich jak temperatura otoczenia, Temperatura/napięcie procesora lub coś w tym stylu?

 23
Author: tvanfosson, 2008-12-19

13 answers

Sprawdź http://random.org/

RANDOM.ORG to prawdziwa usługa liczb losowych, która generuje losowość poprzez szum atmosferyczny.

Bibliotekę Java do współpracy z nią można znaleźć tutaj: http://sourceforge.net/projects/trng-random-org/

 26
Author: Greg Dean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 14:29:08

Twoje pytanie jest niejednoznaczne, co powoduje, że odpowiedzi są wszędzie.

Jeśli szukasz losowej implementacji, która opiera się na źródle losowości systemu (jak zgaduję, jesteś), to javax.krypto.SecureRandom tak robi. Domyślna konfiguracja Sun security provider w Twojej Javie.plik bezpieczeństwa ma następującą postać:

#
# Select the source of seed data for SecureRandom. By default an
# attempt is made to use the entropy gathering device specified by
# the securerandom.source property. If an exception occurs when
# accessing the URL then the traditional system/thread activity
# algorithm is used.
#
# On Solaris and Linux systems, if file:/dev/urandom is specified and it
# exists, a special SecureRandom implementation is activated by default.
# This "NativePRNG" reads random bytes directly from /dev/urandom.
#
# On Windows systems, the URLs file:/dev/random and file:/dev/urandom
# enables use of the Microsoft CryptoAPI seed functionality.
#
securerandom.source=file:/dev/urandom

Jeśli naprawdę pytasz o nadpisanie tego czymś jeszcze bardziej losowym, można to zrobić albo przez zmiana tej właściwości lub użycie innego SecureRandom. Na przykład, możesz użyć dostawcy JCE wspieranego przez moduł HSM, taki jak nCipher nShield, który ma swój własny PRNG, lub inne rozwiązania wymienione w wątku.

 21
Author: ykaganovich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-22 19:06:24

Ponieważ sięgnięcie do tych źródeł losowych danych wymagałoby dostępu sprzętowego, taka biblioteka nie może być napisana przenośnie przy użyciu czystej Javy.

Możesz jednak spróbować napisać kod zależny od platformy, aby odczytać źródło losowych danych platform. Dla Linuksa (i ewentualnie innych systemów uniksopodobnych) może to być na przykład /dev/random.

Spójrz również na klasęSecureRandom , może już mieć to, czego chcesz.

 8
Author: Joachim Sauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 14:06:31

Szybkie i brudne:

public static int generateRandom() throws IOException
{
    int num = 0;
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    for (int i = 0 ; i < Integer.SIZE ; i++)
    {
        System.out
          .println("Flip a fair coin. Enter h for heads, anything else for tails.");

        if (br.readLine().charAt(0) == 'h')
        {
            num += Math.pow(2, i);
        }
    }

    return num;
}
 7
Author: Adam Jaskiewicz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-22 20:20:40

Upewnij się, że naprawdę chcesz" prawdziwych " liczb losowych. Fizyczne źródła losowości muszą być mierzone, a proces pomiaru wprowadza pewien błąd. W niektórych zastosowaniach" pseudo "liczby losowe są w rzeczywistości lepsze od" prawdziwych " liczb losowych. Mogą mieć lepsze właściwości statystyczne i można je generować szybciej. Z drugiej strony, możesz strzelić sobie w stopę generatorami liczb pseudorandomowych, jeśli nie jesteś ostrożny.

 6
Author: John D. Cook,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 14:49:16

Architektura kryptograficzna JAva wymaga silnych kryptograficznie liczb losowych. Zawiera klasę SecureRandom wspomnianą przez @saua.

 4
Author: tvanfosson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 14:19:10

Nie ma prawdziwego generatora liczb losowych, ponieważ wszystkie one polegają w ten czy inny sposób na deterministycznych procedurach obliczania liczby losowej, więc bez względu na to, jak wygenerowane liczby wydają się podążać za prawdziwym rozkładem losowym, mogą być częścią ukrytego-i bardzo złożonego - wzoru, stąd są Pseudo-losowe. Możesz jednak zaimplementować swój własny generator liczb losowych, istnieje kilka fajnych, obliczeniowo-tanich metod, które możesz przeczytać w numerycznych recepturach w C, Wydanie Drugie-Sekcja 7 . HTH

 3
Author: Josef,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 14:58:16

Dla wyjaśnienia: jedynym prawdziwym generatorem losowym istniejącym we wszechświecie jest kwantowy generator losowych bitów . Nie ma innego mechanizmu, który zapewni Ci, że wygenerowane bity są całkowicie losowe, ponieważ nawet jeśli teraz nie możesz przewidzieć wyniku, nie ma gwarancji, że nie będziesz w stanie tego osiągnąć w przyszłości.

Quantum Random Bit Generator ' (QRBG121), który jest szybkim niedeterministyczny generator bitów losowych (liczb), którego losowość opiera się na wrodzona przypadkowość kwantowego procesu fizycznego emisja fotoniczna w półprzewodnikach i późniejsze wykrywanie przez efekt fotoelektryczny. W tym procesie fotony są wykrywane losowo, jeden po drugim niezależnie od siebie. Informacje o czasie wykrycia fotony są używane do generowania losowych binarnych cyfr-bitów. The unique cechą tej metody jest to, że wykorzystuje ona tylko jeden detektor fotonów do wytwarzają zarówno zera, jak i jedynki, co powoduje bardzo małe odchylenie i wysoka odporność na zmienność składników i starzenie. Ponadto, Detekcja pojedynczych fotonów odbywa się za pomocą fotopowielacza (PMT). W porównaniu z półprzewodnikowymi detektorami fotonowymi, PMT mają drastycznie lepszy sygnał niż szum i znacznie mniejsze prawdopodobieństwo pojawianie się afterpulsów, które mogą być źródłem niechcianych korelacje.

Więcej informacji na przykład tutaj: http://random.irb.hr/

 3
Author: Marek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-18 05:35:48

Cytat z Wikipedii: John von Neumann słynnie powiedział: "Każdy, kto używa metod arytmetycznych do wytwarzania liczb losowych, jest w stanie grzechu."

 2
Author: tuinstoel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-22 19:23:16

W większości przypadków liczby pseudolosowe są więcej niż wystarczające. Jeśli potrzebujesz tylko prostej liczby losowej, tj. w 30% czasu to zrobić, następnie znacznik czasu jako ziarno jest to, co chcesz. Jeśli ma to być bezpieczna liczba losowa, na przykład tasowanie talii, chcesz wybrać nasiona nieco ostrożniej, istnieją dobre źródła do tworzenia bezpiecznych nasion.

Powodem użycia nasion jest możliwość "przywołania" tej samej sekwencji liczb losowych generowanych przez algorytm. Bardzo dobry scenariusz na to jest, gdy robisz Stochastic symulacji na jakiś rodzaj i chcesz powtórzyć konkretny eksperyment, to po prostu użyć tego samego ziarna.

[[0]} aby uzyskać lepszy PRNG niż ten w pakiecie z Javą, spójrz na Mersenne Twister .
 2
Author: Guðmundur Bjarni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-22 19:37:45

Na studiach miałem za zadanie zaimplementować generator losowy. Stworzyłem generator liczb losowych w ten sposób: stworzyłem okno pulpitu i poprosiłem użytkownika, aby kliknął na losowe miejsca w oknie, po każdym kliknięciu wziąłem współrzędne klikniętego punktu. To było całkiem przypadkowe.

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 15:26:11

Zobacz też to pytanie: Alternatywne źródła entropii

Znalazłem HotBits kilka lat temu-liczby są generowane z rozpadu radioaktywnego, naprawdę przypadkowych liczb.

Istnieje biblioteka java do dostępu na randomx

Istnieją limity liczby, które można pobrać dziennie, ale zawsze bawiło mnie używanie ich jako naprawdę, naprawdę losowych nasion dla RNG.

 1
Author: Ken Gentle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:22

Z tego co wiem, pracują z czasem maszyny ... !

Do Czego Służą Liczby Losowe

Liczby losowe były używane przez wiele tysięcy lat. Czy rzuca monetą lub rzuca kostką, celem jest opuszczenie końca wynik do losowej szansy. Generatory liczb losowych w komputerze to podobne - są próbą osiągnięcia nieprzewidywalnego, przypadkowego wynik.

Czy Jest to możliwe, aby prawdziwe losowe liczby ?

Tak jest !

Aby wygenerować" prawdziwą " liczbę losową, komputer mierzy pewien rodzaj zjawiska fizycznego, które ma miejsce poza komputerem.

Dla bardziej codziennego przykładu, komputer może polegać na atmosfery szumów lub po prostu użyć dokładnego czasu naciśnięcia klawiszy na klawiaturze jako źródło nieprzewidywalnych danych, czyli entropii. Na przykład twój komputer możesz zauważyć, że nacisnąłeś klawisz dokładnie w 0.23423523 sekund po 2 p. m.. Chwycić wystarczająco dużo specyficznych czasów związanych z tymi naciśnięcia klawisza i będziesz miał źródło entropii, które możesz wykorzystać do Wygeneruj" prawdziwą " liczbę losową.

NSA i sprzętowy generator liczb losowych Intela

Aby ułatwić programistom i pomóc w generowaniu bezpiecznych losowych liczb, chipy Intela zawierają sprzętowy generator liczb losowych znany jako RdRand. Układ ten wykorzystuje źródło entropii na procesorze i zapewnia losowe numery do oprogramowania, gdy oprogramowanie je zażąda.

Źródło: HowToGeek ?

Na wszelki wypadek, że może trzeba wygenerować losowe liczby w Androidzie... Używam danych z akcelerometru dla liczb losowych opartych na true physic:)

 0
Author: Disco4uf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-20 04:30:54