VKontakte Facebook Twitter Umpan RSS

Tidak ada sensor angka acak biologis jendela. Rusia telah menciptakan generator bilangan acak biologis “pertama di dunia”. Bagaimana cara kerjanya? Memeriksa kualitas genset

Ada tiga hal yang berbeda secara mendasar cara yang berbeda memperoleh angka-angka yang digunakan secara acak: fisik, tabel dan algoritmik.

Upaya pertama untuk membuat generator bilangan acak fisik diyakini dimulai pada tahun 3500 SM. dan dikaitkan dengan permainan papan senet, hiburan sosial Mesir kuno. Menurut rekonstruksi aturan permainan modern, empat tongkat datar, satu sisi berwarna putih dan sisi lainnya berwarna hitam, digunakan untuk menentukan jumlah poin yang dicetak oleh setiap pemain dan urutan gerakan dalam permainan ini. Tongkat-tongkat itu dilempar secara bersamaan dan, tergantung pada kombinasi warna yang rontok, dihasilkanlah fitur tambahan pemain. Pada awal abad ke-20. urutan angka acak disimulasikan secara manual - dengan melempar koin atau dadu, tata letak bermain kartu, rolet, mengeluarkan bola dari guci, dll. Sensor fisik (perangkat keras) modern adalah perangkat khusus yang menghasilkan angka acak berdasarkan konversi kebisingan acak yang berasal dari alam atau buatan (kebisingan termal, efek tembakan dalam tabung vakum, peluruhan radioaktif, dll.). Misalnya saja mobil ERNIE 4 (peralatan penunjuk angka acak elektronik),

  • 1 Kadang-kadang, meskipun jarang, distribusi yang ditentukan dalam tabel 0 1 ... 8 9 dianggap standar
  • 0.1 0.1 ... 0.1 0.1/, yang menentukan nomor pemenang dalam lotere bulanan Inggris, menggunakan kebisingan termal transistor sebagai sumber variabel acak. Metode fisik untuk memperoleh barisan bilangan acak memiliki ciri-ciri yang merugikan model simulasi. Ini termasuk, pertama-tama, perlunya tindakan khusus untuk memastikan stabilitas sumber sinyal yang diubah menjadi angka acak, dan ketidakmungkinan mereproduksi urutan angka acak yang dihasilkan.

Tabel bilangan acak tidak memiliki kelemahan ini. Mari kita jelaskan apa yang dimaksud dengan tabel bilangan acak. Anggap saja kita telah menerapkannya N percobaan independen, sebagai hasilnya mereka memperoleh bilangan acak a, a 2, osdg. Penulisan angka-angka tersebut (sesuai urutan kemunculannya dan dalam bentuk tabel persegi panjang) akan menghasilkan apa yang disebut tabel angka acak. Ini digunakan sebagai berikut. Selama penghitungan, kita mungkin memerlukan digit acak atau angka acak. Jika diperlukan nomor acak, maka kita dapat mengambil nomor apa pun dari tabel ini. Hal yang sama berlaku untuk kasus bilangan bulat acak - untuk setiap digit Anda dapat memilih digit apa pun. Jika kita membutuhkan bilangan acak 0 k dari digit berikutnya сс, dan 2 , ос/, dan asumsikan bahwa 8 = (Hoco^.-.o^. Dalam kasus ini, dalam kasus tabel angka acak yang “ideal” , kita dapat memilih digit darinya secara acak, mungkin berturut-turut, Anda dapat menggunakan algoritma pemilihan apa pun yang tidak bergantung pada nilai nomor tabel, mulai dari tempat mana pun di tabel, baca ke segala arah.

Tabel nomor acak pertama diperoleh dengan menggunakan roulette. Tabel tersebut diterbitkan beberapa kali dalam bentuk buku. Salah satu tabel paling terkenal, yang diterbitkan pada tahun 1927, berisi lebih dari 40.000 angka acak "diambil secara acak dari laporan sensus".

Latar belakang sejarah

Leonard Tippet (Leonard Henry Caleb Tippett, 1902-1985) - Ahli statistik Inggris, mahasiswa K. Pearson dan R. Fisher. Pada tahun 1965-1966 - Presiden Masyarakat Statistik Kerajaan. Beberapa hasil penting dalam teori nilai ekstrim dikaitkan dengan namanya, misalnya distribusi Fisher-Tippett dan teorema Fisher-Tippett-Gnedenko.

Kemudian, perangkat khusus (mesin) dirancang yang menghasilkan angka acak secara mekanis. Mesin pertama digunakan pada tahun 1939 oleh M. J. Kendall dan B. Babington-Smith untuk membuat tabel yang berisi 100 ribu digit acak. Pada tahun 1955 perusahaan Perusahaan RAND menerbitkan tabel terkenal yang berisi sejuta digit acak yang diperoleh mesin lain jenis ini. Penggunaan praktis tabel bilangan acak saat ini biasanya terbatas pada masalah yang menggunakan metode pemilihan acak

sampel, misalnya, dalam studi sosiologi atau ketika melakukan pengendalian penerimaan statistik terhadap kualitas produk potong untuk berbagai keperluan.

Ini menarik

Di Rusia, GOST 18321-73 (ST SEV 1934-79) berlaku, yang menetapkan aturan untuk memilih unit produk untuk pengambilan sampel selama kontrol kualitas penerimaan statistik, metode statistik analisis dan regulasi proses teknologi untuk semua jenis produk potong untuk keperluan industri dan teknis serta barang konsumsi. Secara khusus dinyatakan bahwa ketika memilih unit produk untuk sampel, “tabel nomor acak digunakan sesuai dengan ST SEV 546-77.”

terapkan berulang kali; semua angka mudah direproduksi; dan persediaan angka-angka dalam urutan seperti itu terbatas. Namun, urutan angka pseudorandom memiliki keunggulan yang jelas dibandingkan tabel: terdapat rumus sederhana untuk menghitung angka pseudorandom, sementara hanya 3-5 perintah yang dihabiskan untuk mendapatkan setiap angka, dan program perhitungan hanya memakan beberapa sel di menyetir.

Ada banyak algoritma untuk memperoleh urutan bilangan pseudorandom; implementasi algoritma tersebut, yang disebut sensor (generator) bilangan pseudorandom, dijelaskan secara rinci dalam literatur khusus. Mari kita tunjukkan beberapa algoritma yang paling terkenal.

  • Tippett L. Nomor sampel acak. London: Pers Universitas Cambridge, 1927.
  • Lihat: Knuth D.E. Seni Pemrograman. edisi ke-3. M.: Williams, 2000. Jilid 2. Bab. 3. Angka acak.

Memperoleh dan mengonversi angka acak.

Ada dua cara utama untuk mendapatkan nomor acak:

1) Nomor acak dihasilkan oleh lampiran elektronik khusus (sensor nomor acak) yang dipasang pada komputer. Penerapan metode ini hampir tidak memerlukan operasi tambahan selain mengakses sensor bilangan acak.

2) Metode algoritmik - berdasarkan pembangkitan angka acak di mesin itu sendiri menggunakan program khusus. Kerugian dari metode ini adalah biaya tambahan waktu komputer, karena dalam hal ini mesin melakukan pengoperasian dekoder elektronik itu sendiri.

Program untuk menghasilkan bilangan acak menggunakan hukum distribusi tertentu bisa jadi rumit. Oleh karena itu, bilangan acak dengan hukum distribusi tertentu biasanya diperoleh tidak secara langsung, tetapi dengan mentransformasikan bilangan acak yang mempunyai distribusi standar tertentu. Seringkali distribusi baku ini merupakan distribusi seragam (mudah diperoleh dan mudah diubah ke undang-undang lain).

Mendapatkan nomor acak dengan hukum seragam paling menguntungkan menggunakan dekoder elektronik, yang membebaskan komputer dari biaya tambahan waktu komputer. Memperoleh distribusi yang seragam sepenuhnya pada komputer tidak mungkin dilakukan karena terbatasnya sifat bit grid. Oleh karena itu, alih-alih himpunan angka kontinu pada interval (0, 1), digunakan himpunan angka diskrit 2 n angka, dimana N– kedalaman bit kata mesin.

Hukum persebaran penduduk disebut kuasi-seragam . Pada n³20, perbedaan antara hukum seragam dan hukum kuasi-seragam menjadi tidak signifikan.

Untuk memperoleh bilangan acak kuasi seragam digunakan dua cara:

1) menghasilkan angka acak menggunakan dekoder elektronik dengan memodelkan beberapa proses acak;

2) memperoleh bilangan pseudorandom dengan menggunakan algoritma khusus.

Untuk menerima N-digit bilangan acak biner, metode pertama mensimulasikan urutan variabel acak independen z saya, mengambil nilai 0 atau 1. urutan yang dihasilkan dari 0 dan 1, jika kita menganggapnya sebagai bilangan pecahan, dan merupakan variabel acak yang berdistribusi kuasi-seragam pada interval (0, 1). Metode perangkat keras untuk memperoleh angka-angka ini hanya berbeda dalam cara memperoleh implementasinya z saya.

Salah satu caranya adalah dengan menghitung jumlah partikel radioaktif dalam jangka waktu tertentu Dt, jika jumlah partikel melebihi Dt bahkan kalau begitu z saya=1 , dan jika ganjil, maka z saya=0 .

Metode lain menggunakan efek kebisingan dari tabung vakum. Dengan menetapkan nilai tegangan derau masuk momen-momen tertentu waktu itu aku, kita memperoleh nilai variabel acak independen kamu (t i), yaitu tegangan (Volt).



Besarnya z saya ditentukan oleh undang-undang:

Di mana A– nilai tegangan ambang tertentu.

Besarnya A biasanya dipilih dari kondisi:

Kerugian dari metode perangkat keras adalah tidak memungkinkan penggunaan metode proses ganda untuk mengontrol operasi algoritma untuk menyelesaikan masalah apa pun, karena proses yang berulang gagal memperoleh angka acak yang sama.

Pseudorandom nomor panggilan yang dihasilkan di komputer menggunakan program khusus metode berulang: setiap bilangan acak diperoleh dari bilangan sebelumnya menggunakan transformasi khusus.

Transformasi yang paling sederhana adalah sebagai berikut. Biarlah ada beberapa N– bit bilangan biner dari interval tidak (0, 1). Mari kita selesaikan, dan kita dapatkan 2 n angka angka. Mari kita soroti rata-ratanya N pelepasan. Diperoleh dengan cara ini N– digit nomor akan menjadi nilai baru dari nomor acak. Kami mengkuadratkannya lagi, dll. Urutan ini adalah pseudorandom, karena dari sudut pandang teoritis, ini tidak acak.

Kerugian dari algoritma berulang adalah urutan angka acak dapat merosot (misalnya, kita hanya akan menerima urutan nol atau urutan satu, atau periodisitas mungkin muncul).


Perhatikan bahwa idealnya kurva kepadatan distribusi bilangan acak akan terlihat seperti yang ditunjukkan pada Gambar. 22.3. Artinya, idealnya setiap interval berisi jumlah poin yang sama: N Saya = N/k , Di mana N jumlah poin total, k jumlah interval, Saya= 1, , k .

Beras. 22.3. Diagram frekuensi bilangan acak,
dihasilkan secara teoritis oleh generator ideal

Perlu diingat bahwa pembentukan bilangan acak sembarang terdiri dari dua tahap:

  • menghasilkan bilangan acak yang dinormalisasi (yaitu, terdistribusi secara merata dari 0 hingga 1);
  • konversi bilangan acak yang dinormalisasi R Saya ke nomor acak X Saya, yang didistribusikan menurut hukum distribusi (sewenang-wenang) yang dibutuhkan oleh pengguna atau dalam interval yang diperlukan.

Generator bilangan acak menurut cara memperoleh bilangan dibagi menjadi:

  • fisik;
  • datar;
  • algoritmik.

RNG fisik

Contoh RNG fisik dapat berupa: koin (“kepala” 1, “ekor” 0); dadu; drum dengan panah dibagi menjadi beberapa sektor dengan angka; generator kebisingan perangkat keras (HS), yang menggunakan perangkat termal yang berisik, misalnya transistor (Gbr. 22.422.5).

Beras. 22.4. Skema metode perangkat keras untuk menghasilkan angka acak
Beras. 22.5. Diagram perolehan bilangan acak dengan metode hardware
Tugas “Menghasilkan angka acak menggunakan koin”

Hasilkan angka tiga digit acak, terdistribusi secara merata dalam rentang 0 hingga 1, menggunakan koin. Presisi tiga tempat desimal.

Cara pertama untuk menyelesaikan masalah
Lemparkan sebuah koin sebanyak 9 kali, dan jika koin mendarat di kepala, tuliskan “0”; jika koin mendarat di kepala, tuliskan “1”. Jadi, katakanlah sebagai hasil percobaan kita memperoleh barisan acak 100110100.

Gambarlah interval dari 0 hingga 1. Membaca angka secara berurutan dari kiri ke kanan, membagi interval menjadi dua dan setiap kali memilih salah satu bagian dari interval berikutnya (jika 0 digulirkan, maka yang kiri, jika a 1 diluncurkan, lalu yang kanan). Dengan demikian, Anda dapat mencapai titik mana pun dalam interval tersebut, seakurat yang Anda inginkan.

Jadi, 1 : interval dibagi dua dan , separuh kanan dipilih, interval dipersempit: . Nomor berikutnya 0 : interval dibagi dua dan , separuh kiri dipilih, interval dipersempit: . Nomor berikutnya 0 : interval dibagi dua dan , separuh kiri dipilih, interval dipersempit: . Nomor berikutnya 1 : interval dibagi dua dan , separuh kanan dipilih, interval dipersempit: .

Berdasarkan kondisi keakuratan soal, penyelesaian telah ditemukan: bilangan apa pun dari interval, misalnya 0,625.

Pada prinsipnya jika kita mengambil pendekatan yang tegas, maka pembagian interval harus dilanjutkan sampai batas kiri dan kanan interval yang ditemukan COINCIDE dengan ketelitian hingga tempat desimal ketiga. Artinya, dari segi keakuratan, bilangan yang dihasilkan tidak lagi dapat dibedakan dengan bilangan mana pun dari interval tempatnya berada.

Cara kedua untuk menyelesaikan masalah
Mari kita bagi barisan biner yang dihasilkan 100110100 menjadi triad: 100, 110, 100. Setelah mengubah bilangan biner ini menjadi bilangan desimal, kita mendapatkan: 4, 6, 4. Mengganti “0” di depan, kita mendapatkan: 0,464. Cara ini hanya dapat menghasilkan bilangan dari 0,000 hingga 0,777 (karena bilangan maksimum yang dapat “diperas” dari tiga digit biner adalah 111 2 = 7 8) yang sebenarnya bilangan-bilangan tersebut direpresentasikan dalam sistem bilangan oktal. Untuk terjemahan oktal angka masuk desimal mari kita lakukan representasi:
0,464 8 = 4 8 1 + 6 8 2 + 4 8 3 = 0,6015625 10 = 0,602 10.
Jadi, angka yang dibutuhkan adalah: 0,602.

RNG tabel

RNG tabel menggunakan tabel yang disusun secara khusus yang berisi angka-angka terverifikasi yang tidak berkorelasi, yaitu, sama sekali tidak bergantung satu sama lain, sebagai sumber angka acak. Dalam tabel Gambar 22.1 menunjukkan bagian kecil dari tabel tersebut. Dengan menelusuri tabel dari kiri ke kanan dari atas ke bawah, Anda bisa mendapatkan angka acak yang terdistribusi secara merata dari 0 hingga 1 dengan jumlah tempat desimal yang diperlukan (dalam contoh kami, kami menggunakan tiga tempat desimal untuk setiap angka). Karena angka-angka dalam tabel tidak bergantung satu sama lain, tabel tersebut dapat dilintasi dengan cara yang berbeda, misalnya, dari atas ke bawah, atau dari kanan ke kiri, atau, misalnya, Anda dapat memilih angka yang posisinya genap.

Tabel 22.1.
Angka acak. Rata
nomor acak didistribusikan dari 0 hingga 1
Angka acak Terdistribusi secara merata
0 hingga 1 angka acak
9 2 9 2 0 4 2 6 0.929
9 5 7 3 4 9 0 3 0.204
5 9 1 6 6 5 7 6 0.269
… …

Keuntungan metode ini adalah menghasilkan bilangan yang benar-benar acak, karena tabel berisi bilangan-bilangan terverifikasi yang tidak berkorelasi. Kekurangan metode ini: untuk penyimpanan jumlah besar angka memerlukan banyak memori; Ada kesulitan besar dalam membuat dan memeriksa tabel seperti itu; pengulangan saat menggunakan tabel tidak lagi menjamin keacakan urutan nomor, dan oleh karena itu keandalan hasilnya.

Ada tabel yang berisi 500 angka terverifikasi yang benar-benar acak (diambil dari buku karya I. G. Venetsky, V. I. Venetskaya “Konsep dan rumus dasar matematika dan statistik dalam analisis ekonomi”).

RNG algoritmik

Angka-angka yang dihasilkan oleh RNG ini selalu bersifat pseudo-acak (atau kuasi-acak), artinya, setiap angka berikutnya yang dihasilkan bergantung pada angka sebelumnya:

R Saya + 1 = F(R Saya) .

Barisan yang terdiri dari bilangan-bilangan tersebut membentuk perulangan, artinya selalu ada siklus yang berulang dalam jumlah tak terhingga. Siklus yang berulang disebut periode.

Keuntungan RNG ini adalah kecepatannya; generator hampir tidak memerlukan sumber daya memori dan kompak. Kekurangan: bilangan-bilangan tersebut tidak dapat sepenuhnya disebut acak, karena terdapat ketergantungan di antara bilangan-bilangan tersebut, serta adanya periode pada barisan bilangan kuasi-acak.

Mari pertimbangkan beberapa metode algoritmik untuk mendapatkan RNG:

  • metode kuadrat median;
  • metode produk menengah;
  • metode pengadukan;
  • metode kongruen linier.

Metode kotak tengah

Ada beberapa angka empat digit R 0 . Angka ini dikuadratkan dan dimasukkan ke dalam R 1. Selanjutnya dari R 1 mengambil nomor acak baru yang tengah (empat digit tengah) dan menuliskannya R 0 . Kemudian prosedur ini diulangi (lihat Gambar 22.6). Perhatikan bahwa sebenarnya, sebagai nomor acak Anda tidak perlu mengambil ghij, A 0.ghij dengan nol dan koma desimal ditambahkan ke kiri. Fakta ini tercermin seperti pada Gambar. 22.6, dan angka serupa berikutnya.

Beras. 22.6. Skema metode kuadrat rata-rata

Kekurangan metode ini: 1) jika pada beberapa iterasi jumlahnya R 0 menjadi sama dengan nol, kemudian generator mengalami degenerasi, sehingga pemilihan nilai awal yang tepat adalah penting R 0 ; 2) generator akan mengulangi urutan tersebut M N langkah (paling baik), di mana N angka angka R 0 , M dasar sistem bilangan.

Misalnya pada Gambar. 22.6: jika nomornya R 0 akan disajikan di sistem biner bilangan, maka barisan bilangan acak semu tersebut akan diulang dalam 2 4 = 16 langkah. Perhatikan bahwa pengulangan urutan dapat terjadi lebih awal jika nomor awal dipilih dengan buruk.

Metode yang dijelaskan di atas diusulkan oleh John von Neumann dan dimulai pada tahun 1946. Karena metode ini ternyata tidak dapat diandalkan, metode ini segera ditinggalkan.

Metode produk tengah

Nomor R 0 dikalikan dengan R 1, dari hasil yang diperoleh R 2 bagian tengahnya diekstraksi R 2 * (ini adalah angka acak lainnya) dan dikalikan dengan R 1. Semua bilangan acak berikutnya dihitung menggunakan skema ini (lihat Gambar 22.7).

Beras. 22.7. Skema metode produk median

Metode pengadukan

Metode shuffle menggunakan operasi untuk menggeser isi sel ke kiri dan ke kanan secara siklis. Ide metodenya adalah sebagai berikut. Biarkan sel menyimpan nomor awal R 0 . Secara siklis menggeser isi sel ke kiri sebesar 1/4 panjang sel, kita mendapatkan nomor baru R 0 * . Dengan cara yang sama, perputaran isi sel R 0 ke kanan sebesar 1/4 panjang sel, kita mendapatkan angka kedua R 0**. Jumlah angka R 0* dan R 0** memberikan nomor acak baru R 1. Berikutnya R 1 dimasukkan R 0, dan seluruh urutan operasi diulangi (lihat Gambar 22.8).


Beras. 22.8. Diagram metode pencampuran

Perlu diketahui bahwa angka tersebut dihasilkan dari penjumlahan R 0* dan R 0 ** , mungkin tidak muat sepenuhnya di dalam sel R 1. Dalam hal ini, digit tambahan harus dibuang dari angka yang dihasilkan. Mari kita jelaskan ini pada Gambar. 22.8, dimana semua sel diwakili oleh delapan digit biner. Membiarkan R 0 * = 10010001 2 = 145 10 , R 0 ** = 10100001 2 = 161 10 , Kemudian R 0 * + R 0 ** = 100110010 2 = 306 10 . Seperti yang Anda lihat, angka 306 menempati 9 digit (dalam sistem bilangan biner), dan sel R 1 (sama dengan R 0) dapat berisi maksimal 8 bit. Oleh karena itu, sebelum memasukkan nilai ke dalam R 1, perlu untuk menghapus satu "ekstra", bit paling kiri dari angka 306, sehingga menghasilkan R 1 tidak lagi menuju ke 306, tetapi ke 00110010 2 = 50 10 . Perhatikan juga bahwa dalam bahasa seperti Pascal, "pemangkasan" bit tambahan ketika sel meluap dilakukan secara otomatis sesuai dengan jenis variabel yang ditentukan.

Metode kongruen linier

Metode kongruen linier adalah salah satu prosedur paling sederhana dan paling umum digunakan saat ini dalam simulasi bilangan acak. Metode ini menggunakan mod( X, kamu) , yang mengembalikan sisanya ketika argumen pertama dibagi dengan argumen kedua. Setiap bilangan acak berikutnya dihitung berdasarkan bilangan acak sebelumnya dengan menggunakan rumus sebagai berikut:

R Saya+ 1 = mod( k · R Saya + B, M) .

Barisan bilangan acak yang diperoleh dengan menggunakan rumus ini disebut barisan kongruen linier. Banyak penulis menyebut barisan kongruen linier kapan B = 0 metode kongruen perkalian, dan kapan B ≠ 0 — metode kongruen campuran.

Untuk generator berkualitas tinggi, perlu untuk memilih koefisien yang sesuai. Nomornya perlu M cukup besar, karena periodenya tidak bisa lebih lama lagi M elemen. Di sisi lain, pembagian yang digunakan dalam metode ini adalah operasi yang agak lambat, jadi untuk komputer biner pilihan yang logis adalah M = 2 N, karena dalam kasus ini, mencari sisa pembagian direduksi di dalam komputer menjadi operasi logika biner “DAN”. Memilih bilangan prima terbesar juga merupakan hal yang biasa M, kurang dari 2 N: dalam literatur khusus terbukti bahwa dalam hal ini digit orde rendah dari bilangan acak yang dihasilkan R Saya+ 1 berperilaku acak seperti yang lebih tua, yang memiliki efek positif pada seluruh rangkaian angka acak secara keseluruhan. Sebagai contoh, salah satunya Nomor Mersenne, sama dengan 2 31 1, dan dengan demikian, M= 2 31 1 .

Salah satu syarat barisan kongruen linier adalah panjang periodenya harus sepanjang mungkin. Lamanya periode tergantung pada nilainya M , k Dan B. Teorema yang kami sajikan di bawah ini memungkinkan kami menentukan apakah periode tersebut dapat dicapai panjang maksimal untuk nilai tertentu M , k Dan B .

Dalil. Barisan kongruen linier ditentukan oleh angka M , k , B Dan R 0, mempunyai periode yang panjang M jika dan hanya jika:

  • angka B Dan M relatif sederhana;
  • k 1 kali P untuk setiap bilangan prima P, yang merupakan pembagi M ;
  • k 1 adalah kelipatan 4, jika M kelipatan 4.

Terakhir, mari kita akhiri dengan beberapa contoh penggunaan metode kongruen linier untuk menghasilkan bilangan acak.

Ditemukan bahwa serangkaian angka pseudo-acak yang dihasilkan berdasarkan data dari contoh 1 akan diulang setiap kali M/4 angka. Nomor Q diatur secara sewenang-wenang sebelum penghitungan dimulai, namun perlu diingat bahwa rangkaian tersebut memberikan kesan acak pada umumnya. k(dan karena itu Q). Hasilnya bisa sedikit ditingkatkan jika B ganjil dan k= 1 + 4 · Q dalam hal ini baris tersebut akan diulang setiap M angka. Setelah pencarian yang panjang k para peneliti menetapkan nilai 69069 dan 71365.

Generator bilangan acak yang menggunakan data dari Contoh 2 akan menghasilkan bilangan acak yang tidak berulang dengan periode 7 juta.

Metode perkalian untuk menghasilkan bilangan pseudorandom diusulkan oleh D.H. Lehmer pada tahun 1949.

Memeriksa kualitas genset

Kualitas keseluruhan sistem dan keakuratan hasil bergantung pada kualitas RNG. Oleh karena itu, urutan acak yang dihasilkan oleh RNG harus memenuhi sejumlah kriteria.

Pemeriksaan yang dilakukan ada dua jenis:

  • memeriksa keseragaman distribusi;
  • tes untuk independensi statistik.

Memeriksa keseragaman distribusi

1) RNG harus menghasilkan nilai parameter statistik yang mendekati karakteristik hukum acak seragam berikut ini:

2) Tes frekuensi

Tes frekuensi memungkinkan Anda mengetahui berapa banyak angka yang berada dalam suatu interval (M R – σ R ; M R + σ R) , yaitu (0,5 0,2887; 0,5 + 0,2887) atau, pada akhirnya, (0,2113; 0,7887). Karena 0,7887 0,2113 = 0,5774, kami menyimpulkan bahwa dalam RNG yang baik, sekitar 57,7% dari semua nomor acak yang ditarik harus berada dalam interval ini (lihat Gambar 22.9).

Beras. 22.9. Diagram frekuensi RNG ideal
dalam hal memeriksanya untuk uji frekuensi

Perlu juga diperhatikan bahwa banyaknya angka yang termasuk dalam interval (0; 0,5) harus kira-kira sama dengan jumlah angka yang termasuk dalam interval (0,5; 1).

3) Uji chi-kuadrat

Uji chi-kuadrat (uji χ 2) adalah salah satu uji statistik yang paling terkenal; ini adalah metode utama yang digunakan bersama dengan kriteria lainnya. Uji chi-kuadrat diusulkan pada tahun 1900 oleh Karl Pearson. Karyanya yang luar biasa dianggap sebagai dasar statistik matematika modern.

Untuk kasus kita, pengecekan menggunakan kriteria chi-kuadrat akan memungkinkan kita mengetahui berapa besarnya nyata RNG mendekati tolok ukur RNG, yaitu memenuhi persyaratan distribusi seragam atau tidak.

Diagram frekuensi referensi RNG ditunjukkan pada Gambar. 22.10. Karena hukum distribusi RNG referensi seragam, maka probabilitas (teoretis). P Saya memasukkan angka ke dalam Saya interval ke-(semua interval ini k) sama dengan P Saya = 1/k . Dan dengan demikian, di masing-masing k interval akan tercapai mulus Oleh P Saya · N angka ( N jumlah total angka yang dihasilkan).

Beras. 22.10. Diagram frekuensi RNG referensi

RNG nyata akan menghasilkan angka yang didistribusikan (dan belum tentu merata!). k interval dan setiap interval akan berisi N Saya angka (total N 1 + N 2++ N k = N ). Bagaimana kita bisa menentukan seberapa bagus RNG yang diuji dan seberapa dekat dengan referensi? Cukup logis untuk mempertimbangkan selisih kuadrat antara jumlah angka yang dihasilkan N Saya dan "referensi" P Saya · N . Mari kita jumlahkan dan hasilnya adalah:

χ 2 pengalaman. = ( N 1 P 1 · N) 2 + (N 2 P 2 · N) 2++ ( N k – P k · N) 2 .

Dari rumus ini dapat disimpulkan bahwa semakin kecil selisih masing-masing suku (dan oleh karena itu semakin kecil pula selisihnya). nilainya lebih sedikitχ 2 pengalaman. ), semakin kuat hukum distribusi angka acak yang dihasilkan oleh RNG nyata cenderung seragam.

Dalam ekspresi sebelumnya, setiap suku diberi bobot yang sama (sama dengan 1), yang sebenarnya mungkin tidak benar; oleh karena itu, untuk statistik chi-kuadrat, masing-masing perlu dinormalisasi Saya suku ke, membaginya dengan P Saya · N :

Terakhir, mari kita tulis ekspresi yang dihasilkan dengan lebih ringkas dan sederhanakan:

Kami memperoleh nilai uji chi-kuadrat untuk eksperimental data.

Dalam tabel 22.2 diberikan teoretis nilai chi-kuadrat (χ 2 teoritis), dimana ν = N 1 adalah jumlah derajat kebebasan, P ini adalah tingkat kepercayaan yang ditentukan pengguna yang menunjukkan seberapa besar RNG harus memenuhi persyaratan distribusi seragam, atau P — adalah probabilitas bahwa nilai eksperimen χ 2 exp..

akan lebih kecil dari tabulasi (teoretis) χ 2 teoritis.
atau setara dengan itu
Tabel 22.2. Beberapa poin persentase dari distribusi χ 2 hal = 1% hal = 5% hal = 25% hal = 50% hal = 75%
ν = 1 0.00016 0.00393 0.1015 0.4549 1.323 3.841 6.635
ν = 2 0.02010 0.1026 0.5754 1.386 2.773 5.991 9.210
ν = 3 0.1148 0.3518 1.213 2.366 4.108 7.815 11.34
ν = 4 0.2971 0.7107 1.923 3.357 5.385 9.488 13.28
ν = 5 0.5543 1.1455 2.675 4.351 6.626 11.07 15.09
ν = 6 0.8721 1.635 3.455 5.348 7.841 12.59 16.81
ν = 7 1.239 2.167 4.255 6.346 9.037 14.07 18.48
ν = 8 1.646 2.733 5.071 7.344 10.22 15.51 20.09
ν = 9 2.088 3.325 5.899 8.343 11.39 16.92 21.67
ν = 10 2.558 3.940 6.737 9.342 12.55 18.31 23.21
ν = 11 3.053 4.575 7.584 10.34 13.70 19.68 24.72
ν = 12 3.571 5.226 8.438 11.34 14.85 21.03 26.22
ν = 15 5.229 7.261 11.04 14.34 18.25 25.00 30.58
ν = 20 8.260 10.85 15.45 19.34 23.83 31.41 37.57
ν = 30 14.95 18.49 24.48 29.34 34.80 43.77 50.89
ν = 50 29.71 34.76 42.94 49.33 56.33 67.50 76.15
ν > 30 ν hal = 95% ν ) · X P hal = 99% X 2 P+ akar persegi(2 + 2/3 · 2/3+ ν ))
X P = HAI (1/persegi( 2.33 0.00 0.674 1.64 2.33

1.64 P 0,674.

Dianggap dapat diterima P dari 10% hingga 90% Jika χ 2 pengalaman. lebih dari teori χ 2. N Saya(yaitu P Saya · N besar), lalu generator

tidak memuaskan

persyaratan distribusi seragam, karena nilai yang diamati P terlalu jauh dari teori Jika χ 2 pengalaman. dan tidak bisa dianggap acak. Dengan kata lain, interval kepercayaan yang begitu besar ditetapkan sehingga pembatasan terhadap angka menjadi sangat longgar, dan persyaratan terhadap angka menjadi lemah. Dalam hal ini, kesalahan absolut yang sangat besar akan diamati. N Saya Bahkan D. Knuth dalam bukunya “The Art of Programming” mencatat bahwa memiliki χ 2 exp. P Saya · N untuk yang kecil secara umum juga kurang bagus, walaupun sekilas terlihat bagus dari segi keseragaman. Memang, ambil serangkaian angka 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, semuanya ideal dari sudut pandang keseragaman, dan χ 2 pengalaman.

praktis akan menjadi nol, tetapi Anda tidak mungkin mengenalinya sebagai acak. P Jika χ 2 pengalaman. P jauh lebih sedikit dari teori χ 2.

(yaitu P Saya · N kecil), lalu generator

persyaratan distribusi seragam acak, karena nilai yang diamati

terlalu dekat dengan teori

dan tidak bisa dianggap acak.

Mari kita lihat sebuah contoh. Bilangan acak 0,2463389991 terdiri dari angka-angka 2463389991, dan bilangan 0,5467766618 terdiri dari angka-angka 5467766618. Dengan menghubungkan barisan angka-angka tersebut, diperoleh: 24633899915467766618.

Jelas bahwa probabilitas teoritis P Saya kehilangan Saya Digit ke-(dari 0 hingga 9) sama dengan 0,1.

2) Memeriksa kemunculan rangkaian angka yang identik

Mari kita nyatakan dengan N L banyaknya rangkaian angka-angka yang identik dalam suatu barisan yang panjangnya L. Semuanya perlu diperiksa L dari 1 sampai M, Di mana M ini adalah nomor yang ditentukan pengguna: jumlah maksimum digit identik yang muncul dalam satu rangkaian.

Pada contoh “24633899915467766618” ditemukan 2 rangkaian dengan panjang 2 (33 dan 77), yaitu N 2 = 2 dan 2 rangkaian dengan panjang 3 (999 dan 666), yaitu N 3 = 2 .

Peluang terjadinya suatu deret yang panjangnya L sama dengan: P L= 9 10 L (teoretis). Artinya, peluang munculnya suatu rangkaian sepanjang satu karakter sama dengan: P 1 = 0,9 (teoretis). Peluang munculnya rangkaian dua karakter adalah: P 2 = 0,09 (teoretis). Peluang munculnya rangkaian tiga karakter adalah: P 3 = 0,009 (teoretis).

Misalnya, peluang munculnya suatu rangkaian yang panjangnya satu karakter adalah P L= 0,9, karena hanya ada satu simbol dari 10, dan total ada 9 simbol (nol tidak dihitung). Dan peluang munculnya dua lambang “XX” yang identik berturut-turut adalah 0,1 · 0,1 · 9, yaitu peluang 0,1 munculnya lambang “X” pada posisi pertama dikalikan dengan peluang 0,1 munculnya lambang “XX” pada posisi pertama. simbol yang sama akan muncul di posisi kedua “X” dan dikalikan dengan jumlah kombinasi tersebut 9.

Frekuensi kemunculan deret dihitung menggunakan rumus chi-kuadrat yang telah kita bahas sebelumnya menggunakan nilai-nilai P L .

Catatan: Generator dapat diuji berkali-kali, namun pengujian tersebut belum selesai dan tidak menjamin generator menghasilkan angka acak. Misalnya, generator yang menghasilkan urutan 12345678912345 akan dianggap ideal selama pengujian, yang jelas tidak sepenuhnya benar.

Sebagai kesimpulan, kami mencatat bahwa bab ketiga The Art of Programming (Volume 2) karya Donald E. Knuth seluruhnya dikhususkan untuk mempelajari bilangan acak. Ia belajar berbagai metode menghasilkan angka acak, uji statistik keacakan, dan mengubah angka acak yang terdistribusi secara seragam menjadi jenis variabel acak lainnya. Lebih dari dua ratus halaman dikhususkan untuk penyajian materi ini.

Pelajaran 15. Peluang adalah jiwa dari permainan

Anda telah mengajari kura-kura banyak hal. Tapi dia juga punya kemungkinan lain yang tersembunyi. Bisakah kura-kura melakukan sesuatu sendiri yang akan mengejutkan Anda?
Ternyata ya! Ada kura-kura di daftar sensor sensor angka acak:

acak

Kita sering menjumpai angka-angka acak: saat melempar dadu dalam permainan anak-anak, mendengarkan burung kukuk di hutan, atau sekadar “menebak angka apa saja”. Sensor bilangan acak di LogoWorlds dapat mengambil nilai bilangan bulat positif apa pun dari 0 hingga batas nilai yang ditentukan sebagai parameter.

Angka itu sendiri, yang ditentukan sebagai parameter sensor angka acak, tidak pernah muncul.

Misalnya, sensor acak 20 dapat berupa bilangan bulat apa pun dari 0 hingga 19, termasuk 19, sensor acak 1000 dapat berupa bilangan bulat apa pun dari 0 hingga 999, termasuk 999.
Anda mungkin bertanya-tanya di mana permainannya - hanya angka. Namun jangan lupa bahwa di LogoWorlds Anda dapat menggunakan angka untuk mengatur bentuk kura-kura, ketebalan pena, ukuran, warna, dan masih banyak lagi. Hal utama adalah memilih batas nilai yang tepat. Batasan perubahan parameter dasar penyu ditunjukkan pada tabel.
Generator angka acak dapat digunakan sebagai parameter untuk perintah apa pun, misalnya maju, Kanan dll.

Tugas 24. Menggunakan Sensor Angka Acak
Atur salah satu permainan yang disarankan di bawah ini menggunakan sensor angka acak dan luncurkan kura-kura.
Game 1: Layar Berwarna-warni
1. Tempatkan kura-kura di tengah layar.
2. Masukkan perintah di Backpack dan atur modenya Berkali-kali:

warna_baru acak 140 cat tunggu 10

Tim cat melakukan tindakan yang sama seperti alat Isi di editor grafis.
3. Suarakan plotnya.
Game 2: “Pelukis yang Ceria” 1. Modifikasi game #1 dengan menggambar garis di layar menjadi area acak dengan batas kontinu:

2. Selesaikan instruksi di Turtle Backpack dengan putaran dan gerakan acak:

benar acak 360
maju acak 150

Permainan 3: "Tikar Tambal Sulam"
Tetapkan instruksi di Ransel untuk memindahkan kura-kura ( maju 60) dengan ujung pena setebal 60 warna acak (0-139) diturunkan agak miring ( kursus_baru 10).
Permainan 4: "Berburu"
Kembangkan plot di mana kura-kura merah berburu kura-kura hitam. Penyu hitam bergerak sepanjang lintasan acak, dan arah pergerakan penyu merah dikendalikan oleh penggeser.

Pertanyaan untuk pengendalian diri
1. Apa yang dimaksud dengan penghasil angka acak?
2. Apa parameter dari sensor bilangan acak?
3. Apa yang dimaksud dengan batasan nilai?
4. Apakah angka yang ditetapkan sebagai parameter pernah muncul?

PRNG deterministik

Tidak ada algoritma deterministik yang dapat menghasilkan bilangan acak sepenuhnya, algoritma ini hanya dapat memperkirakan beberapa sifat bilangan acak. Seperti yang dikatakan John von Neumann, " siapa pun yang memiliki kelemahan dalam metode aritmatika untuk mendapatkan bilangan acak pasti berdosa».

PRNG apa pun dengan sumber daya terbatas cepat atau lambat akan berputar - ia mulai mengulangi urutan angka yang sama. Lamanya siklus PRNG bergantung pada generator itu sendiri dan rata-rata sekitar 2 n/2, dimana n adalah besarnya keadaan internal dalam bit, meskipun generator kongruen linier dan LFSR memiliki siklus maksimum sekitar 2n. Jika PRNG dapat menyatu pada siklus yang terlalu pendek, PRNG menjadi tidak dapat diprediksi dan tidak dapat digunakan.

Kebanyakan generator aritmatika sederhana, meskipun sangat cepat, memiliki banyak kelemahan serius:

  • Periode/periodenya terlalu pendek.
  • Nilai-nilai yang berurutan tidak berdiri sendiri.
  • Beberapa bit "kurang acak" dibandingkan bit lainnya.
  • Distribusi satu dimensi yang tidak merata.
  • Reversibilitas.

Secara khusus, algoritma mainframe ternyata sangat buruk, sehingga menimbulkan keraguan mengenai validitas hasil banyak penelitian yang menggunakan algoritma ini.

PRNG dengan sumber entropi atau RNG

Sama seperti adanya kebutuhan untuk menghasilkan rangkaian angka acak yang dapat diulang dengan mudah, ada juga kebutuhan untuk menghasilkan angka yang benar-benar tidak terduga atau benar-benar acak. Generator seperti itu disebut generator angka acak(RNG - Bahasa Inggris) generator nomor acak, RNG). Karena generator seperti itu paling sering digunakan untuk menghasilkan kunci simetris dan asimetris yang unik untuk enkripsi, generator tersebut paling sering dibuat dari kombinasi PRNG yang kuat secara kriptografis dan sumber entropi eksternal (dan kombinasi inilah yang sekarang umum dipahami sebagai sebuah RNG).

Hampir semua produsen chip besar memasok RNG perangkat keras berbagai sumber entropi, menggunakan berbagai metode untuk membersihkannya dari prediktabilitas yang tak terhindarkan. Namun, saat ini, kecepatan pengumpulan angka acak oleh semua microchip yang ada (beberapa ribu bit per detik) tidak sesuai dengan kecepatan prosesor modern.

Di komputer pribadi, pembuat perangkat lunak RNG menggunakan sumber entropi yang jauh lebih cepat, seperti noise kartu suara atau penghitung siklus jam prosesor. Sebelum nilai penghitung jam dapat dibaca, pengumpulan entropi adalah titik paling rentan dari RNG. Masalah ini masih belum sepenuhnya terselesaikan di banyak perangkat (misalnya kartu pintar), sehingga masih rentan. Banyak RNG yang masih menggunakan metode pengumpulan entropi tradisional (ketinggalan zaman), seperti mengukur reaksi pengguna (gerakan mouse, dll.), seperti, misalnya, atau interaksi antar thread, seperti di Java secure random.

Contoh sumber RNG dan entropi

Beberapa contoh RNG beserta sumber entropi dan generatornya:

Sumber entropi PRNG Keuntungan Kekurangan
/dev/acak di Linux Penghitung jam CPU, namun hanya dikumpulkan selama interupsi perangkat keras LFSR, dengan keluaran di-hash melaluiIni “memanas” untuk waktu yang sangat lama, bisa “macet” untuk waktu yang lama, atau bekerja seperti PRNG ( /dev/urandom)
yarrow oleh Bruce Schneier Metode tradisional (ketinggalan jaman). AES-256 danDesain tahan kripto yang fleksibel Membutuhkan waktu lama untuk “memanas”, keadaan internal yang sangat kecil, terlalu bergantung pada kekuatan kriptografi dari algoritma yang dipilih, lambat, hanya berlaku untuk pembangkitan kunci
Generator oleh Leonid Yuryev Kebisingan kartu suara ? Kemungkinan besar merupakan sumber entropi yang baik dan cepat Tidak ada PRNG independen yang dikenal kuat terhadap kripto, tersedia secara eksklusif sebagai Windows
Microsoft Dibangun pada Windows, tidak macet Keadaan internal kecil, mudah diprediksi
Komunikasi antar thread Belum ada pilihan lain di Jawa, ada keadaan internal yang besar Pengumpulan entropi lambat
Kekacauan oleh Ruptor Penghitung jam prosesor, dikumpulkan terus menerus Hashing status internal 4096-bit berdasarkan varian non-linier dari generator Marsaglia Sampai yang paling cepat, keadaan internal yang besar, “macet”
RRAND dari Ruptor Penghitung siklus CPU Mengenkripsi keadaan internal dengan stream cipherSangat cepat, keadaan internal dengan ukuran sewenang-wenang yang dapat dipilih, tidak ada “macet”

PRNG dalam kriptografi

Salah satu jenis PRNG adalah PRBG - generator bit pseudo-acak, serta berbagai stream cipher. PRNG, seperti stream cipher, terdiri dari status internal (biasanya berukuran mulai dari 16 bit hingga beberapa megabyte), fungsi untuk menginisialisasi status internal dengan kunci atau benih(Bahasa inggris) benih), fungsi pembaruan keadaan internal, dan fungsi keluaran. PRNG dibagi menjadi aritmatika sederhana, kriptografi rusak, dan kriptografi kuat. Tujuan umumnya adalah untuk menghasilkan urutan angka yang tidak dapat dibedakan dari angka acak dengan metode komputasi.

Meskipun banyak PRNG atau stream cipher yang kuat menawarkan lebih banyak angka "acak", generator tersebut jauh lebih lambat dibandingkan generator aritmatika konvensional dan mungkin tidak cocok untuk penelitian apa pun yang memerlukan prosesor bebas untuk perhitungan yang lebih berguna.

Untuk keperluan militer dan dalam kondisi lapangan, hanya PRNG kuat kriptografi sinkron rahasia (stream cipher) yang tidak digunakan; Contoh PRNG kuat kripto yang terkenal adalah ISAAC, SEAL, Snow, algoritme teoretis Bloom, Bloom, dan Shub yang sangat lambat, serta penghitung dengan fungsi hash kriptografi atau sandi blok yang kuat alih-alih fungsi keluaran.

PRNG perangkat keras

Terlepas dari warisannya, generator LFSR terkenal yang banyak digunakan sebagai PRNG perangkat keras pada abad ke-20, sayangnya, sangat sedikit yang diketahui tentang PRNG perangkat keras modern (stream cipher), karena sebagian besar dikembangkan untuk tujuan militer dan dirahasiakan. . Hampir semua PRNG perangkat keras komersial yang ada dipatenkan dan juga dirahasiakan. PRNG perangkat keras dibatasi oleh persyaratan ketat untuk memori yang dapat dikonsumsi (paling sering penggunaan memori dilarang), kecepatan (1-2 siklus jam) dan area (beberapa ratus FPGA - atau

Karena kurangnya PRNG perangkat keras yang baik, produsen terpaksa menggunakan cipher blok yang jauh lebih lambat namun terkenal yang tersedia (Computer Review No. 29 (2003)

  • Yuri Lifshit. Kursus “Masalah kriptografi modern” Kuliah 9: Generator acak semu
  • L.Barash. Algoritma AKS untuk memeriksa primalitas bilangan dan mencari konstanta penghasil bilangan pseudorandom
  • ZhelnikovVladimir. Urutan angka pseudorandom // Kriptografi dari papirus ke komputer M.: ABF, 1996.
  • random.org (Bahasa Inggris) - layanan online untuk menghasilkan nomor acak
  • Bilangan Acak Kriptografis
  • Teori dan Praktek Pembuatan Angka Acak
  • Zvi Gutterman, Benny Pinkas, Tzachy Reinman. Analisis Penghasil Angka Acak Linux
  • Rangkaian Uji Statistik untuk Penghasil Angka Acak dan Pseudorandom untuk Aplikasi Kriptografi NIST SP 800-22


  • 2024 Tentang kenyamanan dalam rumah. meteran gas. Sistem pemanas. Persediaan air. Sistem ventilasi