Sözde rastgele sayılar üretmek için Doğrusal Eşlik (LCG), Toplamsal Eşlik (Lagged Fibonacci), LFSR ve Chi-Square testini içerir.
Bilgisayarlar deterministik sistemler oldukları için gerçek anlamda rastgele sayı üretemezler. Bunun yerine, belirli bir başlangıç değerinden başlayarak matematiksel formüllerle rastgele görünen diziler üreten Sözde Rastgele Sayı Üreteçleri kullanılır.
Bu modül, kriptografi, simülasyon ve oyunlarda kullanılan temel PRNG algoritmalarını ve bunların kalitesini ölçmek için kullanılan istatistiksel Ki-Kare rastgelelik testini içerir.
Aşağıdaki uygulamalar PDF kaynaklarındaki pseudo kod akışını modern veri yapılarıyla ifade eder. Kenar durumları görünür bırakıldığı için örnekler doğrudan test edilebilir.
1// LCG2class LCG {3 private state: number;4 constructor(seed: number, private a = 1664525, private c = 1013904223, private m = Math.pow(2, 32)) { this.state = seed; }5 next(): number { this.state = (this.a * this.state + this.c) % this.m; return this.state; }6 nextFloat(): number { return this.next() / this.m; }7}8// LFSR9class LFSR {10 private state: number;11 constructor(seed: number, private width: number, private taps: number[]) { this.state = seed & ((1 << width) - 1); }12 step(): number {13 let feedback = 0;14 for (const tap of this.taps) { feedback ^= (this.state >> (tap - 1)) & 1; }15 const outputBit = this.state & 1;16 this.state = (this.state >> 1) | (feedback << (this.width - 1));17 return outputBit;18 }19}Üreteci ve parametreleri girin. Örn: lcg; seed=123, a=1103515245, c=12345, m=2147483648, n=10 veya acg; lags=3,7, m=1000, seed=123, n=10 veya lfsr; seed=11, width=4, taps=4,3, n=15 veya chisquare; values=0.1,0.5,0.9,0.3,0.7,0.2,0.8,0.4,0.6,0.0
Üreteci ve parametreleri girin. Örn: lcg; seed=123, a=1103515245, c=12345, m=2147483648, n=10 veya acg; lags=3,7, m=1000, seed=123, n=10 veya lfsr; seed=11, width=4, taps=4,3, n=15 veya chisquare; values=0.1,0.5,0.9,0.3,0.7,0.2,0.8,0.4,0.6,0.0
En İyi Durum: Her adım için O(1)
Ortalama Durum: Her adım için O(1)
En Kötü Durum: Her adım için O(1)
O(1) (ACG için O(K) hafıza) - Bu algoritmanın karmaşıklığı belirtilmemiş.
Rastgele Sayı Üreteçleri (Random Number Generators - PRNG) Algoritması ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar: