Metode linear kongruen: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
menambahkan gambar pada →Panjang periode: dan menghapus tag {{kembangkan bagian}} pada →Kelebihan dan kekurangan |
Rescuing 3 sources and tagging 0 as dead.) #IABot (v2.0.8 |
||
Baris 54:
* Karena <math> x \ \ \text{mod} \ \ q < q \leq m/a</math>, suku pertama tegas lebih kecil dari <math> am/a = m</math>. Jika <math> a</math> dipilih sehingga <math> r\leq d</math> (sehingga <math> r/q \leq 1</math>), maka suku kedua juga akan lebih kecil dari <math> m</math> karena <math> r\lfloor x/q \rfloor \leq rx/q = x (r/q) \leq x < m</math>.
Dengan cara ini, untuk menghitung kedua suku cukup digunakan ''single-width product'', dan selisih antara keduanya terletak di <math> [1-m, \,m-1]</math>, sehingga dapat disederhanakan menjadi <math> [0,\,m-1]</math> dengan satu kondisi penjumlahan.<ref>{{cite web|last=Fenerty|first=Paul|date=11 September 2006|title=Schrage's Method|url=http://home.earthlink.net/~pfenerty/pi/schrages_method.html|access-date=2017-10-31|archive-date=2016-07-09|archive-url=https://web.archive.org/web/20160709153256/http://home.earthlink.net/~pfenerty/pi/schrages_method.html|dead-url=yes}}</ref>
Kekurangan kedua dari metode ini adalah cukup canggung untuk mengonversi nilai <math> 1\leq x < m</math> ke distribusi bit acak yang uniform. Jika sebuah prima yang dekat dengan perpangkatan 2 digunakan, bilangan acak (yang tidak pernah muncul) dapat diabaikan.
Baris 116:
|bit 30..16 pada <code>rand()</code>, 30..0 in <code>lrand()</code>
|-
|[[glibc]] (digunakan oleh [[GNU Compiler Collection|GCC]])<ref>[https://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/random_r.c;hb=glibc-2.26#l362 Implementation in glibc-2.26 release.] {{Webarchive|url=https://web.archive.org/web/20210226211536/https://sourceware.org/git/?p=glibc.git%3Ba%3Dblob%3Bf%3Dstdlib%2Frandom_r.c%3Bhb%3Dglibc-2.26#l362 |date=2021-02-26 }} See the code after the test for "TYPE_0"; the GNU C library's ''rand()'' in [[stdlib.h]] uses a simple (single state) linear congruential generator only in case that the state is declared as 8 bytes. If the state is larger (an array), the generator becomes an additive feedback generator ([https://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/random_r.c;hb=glibc-2.26#l187 initialized using ''minstd_rand0''] {{Webarchive|url=https://web.archive.org/web/20210226211536/https://sourceware.org/git/?p=glibc.git%3Ba%3Dblob%3Bf%3Dstdlib%2Frandom_r.c%3Bhb%3Dglibc-2.26#l187 |date=2021-02-26 }}) and the period increases. See the [http://www.mscs.dal.ca/~selinger/random/ simplified code] that reproduces the random sequence from this library.</ref>
|2³¹
|1103515245
|