Eindimensionaler Zufallsgenerator fĂŒr reelle Zahlen

Die Erzeugung einer kontinuierlichen einheitlichen Zufallsvariablen erwies sich als keine leichte Aufgabe, vielleicht weil die Formulierung des Problems etwas absurd ist, weil das logische Erhalten von ZufĂ€lligkeit bedeutet, keine Lösung zu finden. Wenn Sie jedoch das einfachste "Wie wird es auf Englisch sein - ich weiß nicht?" Hinterlassen, finden Sie in Artikeln, die sich mit Algorithmen befassen, Arbeiten zum Erstellen nur von Folgen von Zufallszahlen.





Die Generatorklasse "True Random" verwendet physikalische PhĂ€nomene und externe EinschrĂ€nkungen. Um beispielsweise eine dezimale Zufallszahl zu generieren, finden Sie die Empfehlung, einen "atmosphĂ€rischen Sensor" zu verwenden. Als Programmierliebhaber erschien mir dieser Zustand natĂŒrlich unfair, und lange Zeit "reifte das Problem". Eine Variante der Lösung, wie von der Formulierung des Problems erwartet, erschien zufĂ€llig als ErgĂ€nzung zum Kompressionsproblem beim Packen von harten Kugeln . Das Problem hat keine analytische Lösung gefunden, da es noch keine Hinweise auf seine Abwesenheit gibt. Die Quelle ist durch Ă€ußere Anzeichen durchaus geeignet. Ich habe jedoch bei der umgekehrten Berechnung des Generatorzustands nicht mehr als unendliche KomplexitĂ€t erhalten.





Die Idee ist nicht neu, sie wurde zum Beispiel in UNIX-Systemen verwendet, aber der Grund, warum ich den angegebenen Algorithmus nicht als Funktion verwenden kann, stieß nur auf eine grĂŒndliche Untersuchung seiner Arbeit. Es ist unmöglich, eine endliche Schwankung einer unendlichen Anzahl von Parametern mathematisch bereitzustellen. Wenn der Generator also wirklich kontinuierlich ist, ist die Anzahl seiner Werte im Gegensatz zur arithmetischen unendlich. In der Praxis habe ich keine Fehler in seiner Arbeit festgestellt, aber insgesamt sind es nicht mehr als Monate Arbeit, obwohl der "zweite Hauptsatz der Thermodynamik" ebenfalls auf meiner Seite steht, bietet er keine strikte logische ZuverlĂ€ssigkeit. Daher gebe ich nicht vor, den Algorithmus als Funktion fĂŒr Systeme mit hoher ZuverlĂ€ssigkeit zu verwenden, aber ich gebe zu, dass zusammen mit zusĂ€tzlichen Modifikationen die formale ZuverlĂ€ssigkeit erheblich erhöht werden kann.





. , Diehard , "".





, . , , " " " ". :





D - D-2 .





Eine zweidimensionale Projektion von zufÀlligen Punkten von der OberflÀche einer vierdimensionalen Kugel.
.

. .





RandomSphere[Rn_: 2, Pn_: 1, Rb_: 1] := 
 Module[{i, j, m, p, r, s, S, X, Xi, Xj, Pm},
  X = Array[0 &, {Pn, Rn}]; Pm = Rn; s = 1/Sqrt[2];
  For[p = 1, p <= Pn, p++, i = RandomInteger[{1, Rn}]; S = 0; 
   For[r = 1, r <= Rn, r++,
    X[[p, r]] = 
     If[r != i, RandomReal[{-1, 1}], RandomChoice[{-1, 1}]]; 
    S += X[[p, r]]^2];
   X[[p]] *= Rb/Sqrt[S];
   For[m = 1, m <= Pm, m++,
    i = RandomInteger[{1, Rn}]; j = i; 
    While[i == j, j = RandomInteger[{1, Rn}]];
    Xi = X[[p, i]];
    Xj = X[[p, j]];
    X[[p, i]] = s (Xj - Xi);
    X[[p, j]] = s (Xj + Xi)]]; Return[X]]
      
      



, . , , , . , , .





Darstellung einer zweidimensionalen Projektion einer "staubigen OberflĂ€che im Licht" fĂŒr transparente 7,4,3-dimensionale Kugeln.
" " 7,4,3 .

, " " .





.





. , . , :





. : , . .





. , , N. O(N(N-N1)/2) O(N^2). , N^(1+1/D) , .





Diehard, Parking Test, "Numerous experiments prove" , , . , .





: , . , , , .





:





,





r = {\ left ({\ frac {{Gamma \ left ({\ frac {M} {2} + 1} \ right)}} {{{\ pi ^ {\ frac {M} {2}}} }} \ right) ^ {\ frac {1} {M}}}

M - , Gamma- . R-r,





R = {\left( {V\frac{{Gamma\left( {\frac{M}{2} + 1} \right)}}{{{\pi ^{\frac{M}{2}}}}}} \right)^{\frac{1}{M}}}

V , . ,





P\left( x \right) =   \begin{cases}    {{{\left( {\frac{x}{{R - r}}} \right)}^M}} &\text{${0 \le x \le R - r}$}\\    1&\text{${x > R - r}$}  \end{cases}

X, r, .. 2r :





X = \frac{{{{\left( {2r} \right)}^M}}}{{{{\left( {R - r} \right)}^M}}} = \frac{{{2^M}}}{{{{\left( {\frac{R}{r} - 1} \right)}^M}}}

(T(T-1))/2- , , Y :





Y = {\left( {1 - X} \right)^{\frac{{T\left( {T - 1} \right)}}{2}}} = {\left( {1 - \frac{{{2^M}}}{{{{\left( {\frac{R}{r} - 1} \right)}^M}}}} \right)^{\frac{{T\left( {T - 1} \right)}}{2}}} = {{\rm{e}}^{ - \frac{{{2^M}}}{{{{\left( {\frac{R}{r} - 1} \right)}^M}}}\frac{{T\left( {T - 1} \right)}}{2}}}

, , . , , .





Vergleich von Analysen und empfangenen Werten in einem mathematischen Paket.  Entlang der Achsen des Diagramms die Überlappungswahrscheinlichkeit in Prozent und der FĂŒllfaktor in Prozent (100 * T / V).  Berechnungsparameter M = 3, V = 8000
. (100*T/V). M=3, V=8000
Vergleichsergebnisse mit C #
C#

C# . , , Diehard .





- , "" . , , ParkingTest . . , . , , , .





, , . 10^8 , .





, , . , .





. , , , . , . " " - , , .





Anfangs interessierte mich die Frage nach der Existenz einer Quelle fĂŒr den praktisch direkten Empfang nur zufĂ€lliger Gleitkommazahlen. Daher ist die Art dieses Artikels methodisch, der Algorithmus gibt nicht vor, in der Leistung mit Hardware-RNGs zu konkurrieren, und noch mehr mit arithmetischen PRNGs, da er beispielsweise die Berechnung der Wurzel enthĂ€lt, aber dennoch als verwendet werden kann duplizieren oder debuggen.





Algorithmusimplementierung in C #








All Articles