Generator bilangan riil acak satu dimensi

Pembangkitan variabel acak seragam kontinu ternyata bukan tugas yang mudah, mungkin karena rumusan masalahnya sedikit tidak masuk akal, karena secara logis mendapatkan keacakan berarti tidak menemukan solusi. Namun, meninggalkan yang paling sederhana "bagaimana jadinya dalam bahasa Inggris - saya tidak tahu?", Dalam artikel yang ditujukan untuk algoritme, Anda akan menemukan pekerjaan untuk hanya membuat urutan angka acak.





Kelas generator "Acak Benar" menggunakan fenomena fisik dan batasan eksternal, jadi misalnya, untuk menghasilkan bilangan acak desimal, Anda dapat menemukan rekomendasi untuk menggunakan "sensor atmosfer". Secara alami, sebagai pencinta pemrograman, keadaan ini menurut saya tidak adil, dan untuk waktu yang cukup lama "masalahnya semakin matang." Varian solusi, seperti yang diharapkan dari perumusan masalah, muncul secara kebetulan, sebagai tambahan masalah kompresi untuk pengemasan hard spheres . Masalahnya belum menemukan solusi analitis, karena belum ada bukti ketiadaannya, masing-masing, sumbernya cukup sesuai dengan tanda-tanda eksternal. Namun, saya tidak mendapatkan lebih dari kompleksitas tak terbatas dalam komputasi terbalik dari status generator.





Idenya bukanlah hal baru, ini telah digunakan, misalnya, dalam sistem UNIX, tetapi alasan mengapa saya tidak dapat menggunakan algoritme yang diberikan sebagai fungsi hanya karena studi menyeluruh tentang kerjanya. Tidak mungkin secara matematis memberikan fluktuasi terbatas dari sejumlah parameter yang tak terbatas, oleh karena itu, jika generator benar-benar kontinu, maka, berbeda dengan yang aritmatika, jumlah nilainya tidak terbatas. Dalam prakteknya, saya tidak menemui kegagalan dalam pekerjaannya, tetapi secara total itu tidak lebih dari berbulan-bulan kerja, meskipun "hukum kedua termodinamika" juga ada di pihak saya, itu tidak memberikan keandalan logis yang ketat. Oleh karena itu, saya tidak berpura-pura menggunakan algoritme sebagai fungsi untuk sistem dengan keandalan tinggi, tetapi saya akui bahwa, bersama dengan modifikasi tambahan, keandalan formal dapat ditingkatkan secara signifikan.





. , Diehard , "".





, . , , " " " ". :





D - D-2 .





Proyeksi dua dimensi dari titik-titik acak dari permukaan bola empat dimensi.
.

. .





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]]
      
      



, . , , , . , , .





Ilustrasi proyeksi dua dimensi dari "permukaan berdebu dalam cahaya" untuk bola transparan 7,4,3 dimensi.
" " 7,4,3 .

, " " .





.





. , . , :





. : , . .





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





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





: , . , , , .





:





,





r = {\ kiri ({\ frac {{Gamma \ kiri ({\ frac {M} {2} + 1} \ kanan)}} {{{\ pi ^ {\ frac {M} {2}}}} }} \ kanan) ^ {\ frac {1} {M}}}

M - , Gamma- . R-r,





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

V , . ,





P \ kiri (x \ kanan) = \ mulai {kasus} {{{\ kiri ({\ frac {x} {{R - r}}} \ kanan)} ^ M}} & \ teks {$ {0 \ le x \ le R - r} $} \\ 1 & \ text {$ {x> R - r} $} \ end {kasus}

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 = {\ kiri ({1 - X} \ kanan) ^ {\ frac {{T \ kiri ({T - 1} \ kanan)}} {2}}} = {\ kiri ({1 - \ frac { {{2 ^ M}}} {{{{\ left ({\ frac {R} {r} - 1} \ right)} ^ M}}}} \ kanan) ^ {\ frac {{T \ left ( {T - 1} \ kanan)}} {2}}} = {{\ rm {e}} ^ {- \ frac {{{2 ^ M}}} {{{{\ kiri ({\ frac {R } {r} - 1} \ kanan)} ^ M}}} \ frac {{T \ kiri ({T - 1} \ kanan)}} {2}}}

, , . , , .





Perbandingan analitik dan nilai yang diterima dalam paket matematika.  Di sepanjang sumbu grafik, kemungkinan tumpang tindih dalam persen dan faktor pengisian dalam persen (100 * T / V).  Parameter perhitungan M = 3, V = 8000
. (100*T/V). M=3, V=8000
Hasil perbandingan dengan C #
C#

C# . , , Diehard .





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





, , . 10^8 , .





, , . , .





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





Awalnya, saya tertarik dengan pertanyaan tentang keberadaan sumber untuk penerimaan langsung bilangan titik mengambang acak saja. Oleh karena itu, sifat artikel ini adalah metodis, algoritme tidak berpura-pura bersaing dalam kinerja dengan RNG perangkat keras, dan terlebih lagi dengan PRNG aritmatika, karena mengandung, misalnya, menghitung root, tetapi masih dapat digunakan sebagai a duplikat atau debug satu.





Implementasi algoritma di C #








All Articles