Sayı Üretici Nedir?
Sayı üreteci, değerleri alıcı kişi veya sistem tarafından önceden tam olarak tahmin edilemeyen bir sayı dizisi üreten bir süreç, algoritma veya fiziksel cihazdır. Çıktı, tanımlanmış bir aralıktan, dağılımdan veya kurallar kümesinden alınan tek bir sayı veya keyfi uzunlukta bir dizi olabilir. Sayı üreteçleri, bilgisayar bilimlerinde, istatistikte, kriptografide, oyunlarda, bilimsel simülasyonlarda ve günlük karar verme süreçlerinde yer alarak modern matematik ve mühendislikte en yaygın kullanılan araçlardan biri haline gelmiştir.
En önemli ayrım, gerçek rastgelelik ile rastgeleliğin hesaplamalı yaklaşımı arasındadır. Yazılımlardaki çoğu sayı üreteci gerçek anlamda rastgele değildir; istatistiksel olarak tahmin edilemez sonuçlar üreten ve çoğu pratik amaç için rastgelelik gibi davranan deterministik algoritmalardır. Daha küçük bir üreteç sınıfı ise, hiçbir algoritmanın yeniden üretemeyeceği sayılar üretmek için gerçek fiziksel belirsizliği kullanır. Hangi türü kullandığınızı anlamak son derece önemlidir, çünkü yanlış üreteci seçmenin sonuçları, hatalı araştırma sonuçlarından felaket niteliğindeki güvenlik açıklarına kadar uzanabilir.
Sayı Üreticilerinin Önemi
Sayı üreteçleri, çok çeşitli alanlarda temel altyapıyı oluşturmaktadır. Kaliteleri, her alandaki sonuçların geçerliliğini doğrudan belirler.
- Kriptografi ve güvenlik: Şifreleme anahtarları, oturum belirteçleri, rastgele sayılar ve tek kullanımlık şifreler, tahmin edilmesi hesaplama açısından imkansız olan kaynaklardan üretilmelidir. Burada zayıf bir üretici, milyonlarca kullanıcıyı saldırıya maruz bırakabilir. 2008'deki Debian OpenSSL güvenlik açığı, entropi tohumlamasında istem dışı bir azalmadan kaynaklanmış ve özel anahtarları tahmin edilebilir hale getirerek dünya çapındaki sunucuları tehlikeye atmıştır.
- Bilimsel simülasyon: Fizik, finans, iklim modellemesi ve ilaç keşfinde kullanılan Monte Carlo yöntemleri, analitik olarak çözülmesi imkansız olan problemlerin çözümlerini yaklaşık olarak bulmak için büyük rastgele sayı dizilerine dayanır. Üretecin istatistiksel kalitesi, simülasyonun doğruluğunu doğrudan etkiler.
- İstatistiksel örnekleme: Anket araştırmaları, klinik denemeler ve kalite kontrol denetimleri, örneklerin popülasyonlarını önyargısız bir şekilde temsil etmesini sağlamak için rastgele seçime dayanır. Gizli kalıplara sahip bir jeneratör, belirli sonuçları sistematik olarak dışlayarak sonuçları geçersiz kılabilir.
- Oyun ve kumar: Kart oyunlarında, piyangolarda, slot makinelerinde ve çevrimiçi kumarhanelerde adalet, yasal ve etik olarak öngörülemeyen sayı üretimine bağlıdır. Çoğu yargı bölgesindeki düzenleyici kurumlar, onaylı rastgele sayı üreteçleri gerektirmektedir.
- Prosedürel içerik üretimi: Video oyunları, arazi, zindanlar, düşman davranışları ve ganimetleri, önceden belirlenmiş sözde rastgele diziler kullanarak üretir; bu da kompakt koddan geniş ve çeşitli dünyaların yaratılmasına olanak tanır.
- Günlük kararlar: Piyangodan kazananı seçmek, öğrencileri gruplara ayırmak, rastgele bir çalma listesi oluşturmak veya bir restoran seçmek gibi; sayı üreteçleri her ölçekte tarafsız karar verme işlemlerini gerçekleştirir.
Sayı Üreticilerinin İki Temel Türü
Her sayı üreteci, öngörülemezliklerinin kaynağına göre iki geniş kategoriden birine aittir.
Sözde Rastgele Sayı Üreticileri (PRNG'ler)
Sözde rastgele sayı üreteci, tohum adı verilen bir başlangıç değeri alan ve bir sayı dizisi üretmek için matematiksel bir fonksiyonu tekrar tekrar uygulayan deterministik bir algoritmadır. Aynı tohum verildiğinde, bir sözde rastgele sayı üreteci her zaman tam olarak aynı diziyi üretir. Dizi, kesin matematiksel anlamda rastgele değildir - tamamen tohum tarafından belirlenir - ancak rastgelelik için istatistiksel testlerden geçer ve çoğu kriptografik olmayan uygulama için uygundur.
Temel mekanizma, her adımda dönüştürülen bir bit bloğu olan dahili bir durumu korumayı içerir. Çıktı bu durumdan türetilir ve bir sonraki çıktı üretilmeden önce durum güncellenir. Tekrarlanmadan önceki dizinin uzunluğuna periyot denir. İyi bir sözde rastgele sayı üretecinin periyodu o kadar uzundur ki, pratikte tekrarlama asla görülmez.
Yaygın kullanılan PRNG algoritmaları şunlardır:
- Doğrusal Uyumlu Üreteç (LCG): En eski ve en basit sözde rastgele sayı üreteçlerinden biri olup, X n+1 = (aX n + c) mod m formülünü kullanır. Hızlı ve uygulaması kolaydır, ancak kısa periyotlar ve daha yüksek boyutlarda tespit edilebilir kalıplar gibi bilinen zayıf yönleri vardır. Birçok erken dönem programlama dilinde kullanılmış ve hala bazı standart kütüphanelerde bulunmaktadır.
- Mersenne Twister (MT19937): 1997 yılında geliştirilen bu sayı, Python, Ruby, PHP ve R dahil olmak üzere genel amaçlı programlama dillerinde en yaygın kullanılan sözde rastgele sayı üreteci (PRNG)dir. 2 19937 −1 periyoduna sahiptir, neredeyse tüm istatistiksel testlerden geçer ve hızlıdır. Bununla birlikte, kriptografik olarak güvenli değildir; 624 ardışık çıktıyı bilmek, tüm iç durumunu yeniden oluşturmak ve gelecekteki tüm çıktıları tahmin etmek için yeterlidir.
- Xorshift ve Xoshiro/Xoroshiro: Bit düzeyinde XOR ve kaydırma işlemlerine dayalı hızlı, modern bir sözde rastgele sayı üreteci (PRNG) ailesi. Xoshiro256** ve Xoroshiro128+, hızları, küçük durum boyutları ve mükemmel istatistiksel özellikleri nedeniyle oyun motorlarında ve sayısal hesaplamalarda popülerdir.
- PCG (Permütasyonlu Uyumlu Üretici): Doğrusal uyumlu bir tabanı permütasyon çıkış fonksiyonuyla birleştiren daha yeni bir aile. PCG üreticileri hızlı, istatistiksel olarak mükemmel ve birden fazla bağımsız akışı destekleyerek paralel simülasyon için oldukça uygundur.
Gerçek Rastgele Sayı Üreticileri (TRNG'ler)
Gerçek rastgele sayı üreteci, çıktısını gerçekten tahmin edilemez bir fiziksel süreçten alır; bu süreç kuantum mekaniği, termal gürültü veya diğer fiziksel entropi kaynakları tarafından yönetilir. Kaynak deterministik olmadığı için, aynı kurulumla yapılan iki çalıştırma yine de farklı çıktılar üretir. Gerçek rastgele sayı üreteçleri, bir diziyi yeniden üretmek için tohumlanamaz; bu hem onların gücü hem de bazı bağlamlarda bir sınırlamasıdır.
TRNG'lerde kullanılan fiziksel entropi kaynakları şunlardır:
- Termal gürültü: Bir dirençteki elektronların rastgele hareketi, örneklenip sayısallaştırılabilen voltaj dalgalanmaları üretir. Bu, en yaygın donanım entropi kaynaklarından biridir.
- Radyoaktif bozunma: Radyoaktif bir örnekten yayılan parçacıkların zamanlaması temelde kuantum mekanikseldir ve tahmin edilemez. Bilgisayarlara bağlı Geiger sayaçları bu entropiyi toplayabilir.
- Fotonik kuantum etkileri: Fotonları ayıran ve hangi yolu izlediklerini ölçen cihazlar, kanıtlanabilir rastgeleliğe sahip bitler üretmek için kuantum süperpozisyonundan yararlanır. Ticari kuantum rastgele sayı üreteçleri (QRNG'ler) artık mevcuttur.
- Atmosferik gürültü: RANDOM.ORG gibi hizmetler, atmosferden radyo frekanslı gürültü örnekleri alır, bunları sayısallaştırır ve elde edilen sayıları internet üzerinden sunar. Bu, hizmet olarak sunulan bir gerçek zamanlı rastgele sayı üreteci (TRNG) türüdür.
- İşletim sistemi entropi havuzları: Modern işletim sistemleri, donanım kesintilerinden, disk zamanlamasından, ağ paketi varış zamanlarından ve kullanıcı girdilerinden (klavye vuruşları, fare hareketleri) entropi toplar. Linux'ta bu havuz
/dev/randomve/dev/urandomaracılığıyla; Windows'ta ise CryptGenRandom API'si aracılığıyla kullanıma sunulur.
Kriptografik Olarak Güvenli Sözde Rastgele Sayı Üreticileri (CSPRNG'ler)
Üçüncü bir kategori, sözde rastgele sayı üreteçleri (PRNG'ler) ve gerçek rastgele sayı üreteçleri (TRNG'ler) arasındaki boşluğu doldurur. Kriptografik olarak güvenli bir sözde rastgele sayı üreteci, gerçek bir entropi kaynağından beslenen ve çıktısı, önemli kaynaklara sahip bir düşman tarafından bile gerçek rastgelelikten ayırt edilemeyecek şekilde tasarlanmış bir PRNG'dir. Çıktısının herhangi bir bölümünü bilmek, geçmiş veya gelecekteki değerleri tahmin etmeye olanak sağlamaz.
Örnekler şunlardır:
- ChaCha20: Linux'un 4.8 çekirdeğinden beri
/dev/urandomda dahil olmak üzere modern işletim sistemlerinde ve kriptografik kütüphanelerde CSPRNG olarak kullanılan bir akış şifreleme algoritması. - Fortuna: Bruce Schneier ve Niels Ferguson tarafından tasarlanan, kendisini sürekli olarak birden fazla entropi kaynağından yeniden üreten ve bu sayede durum ihlali saldırılarına karşı dirençli olan bir CSPRNG (Bilinçli Sözel Rastgele Sayı Üreteci).
- HMAC-DRBG ve CTR-DRBG: NIST (SP 800-90A) tarafından standartlaştırılmış, kriptografik kütüphanelerde ve donanım güvenlik modüllerinde yaygın olarak kullanılan deterministik rastgele bit üreteçleri.
Sayı Üretici Nasıl Çalışır: Adım Adım
Uygulamalar farklılık gösterse de, çoğu sayı üreteci ortak bir çalışma modelini izler.
- Başlatma: Üreteç kendi iç durumunu oluşturur. Sözde rastgele sayı üreteci (PRNG) için bu, genellikle geçerli sistem saati, kullanıcı tarafından sağlanan bir tamsayı veya bir entropi kaynağından gelen baytlar olan bir başlangıç değerini kabul etmek anlamına gelir. Gerçek rastgele sayı üreteci (TRNG) için bu adım, fiziksel ölçüm donanımını etkinleştirmeyi içerir.
- Durum dönüşümü: Üretici, temel matematiksel fonksiyonunu mevcut duruma uygulayarak yeni bir durum üretir. Mersenne Twister'da bu, 32 bitlik tamsayıların 624 elemanlı bir dizisi üzerinde bir bükme işlemi içerir. Doğrusal uyumlu bir üreticide ise tek bir çarpma, toplama ve modül işlemidir.
- Çıktı çıkarma: Yeni durumun bir kısmı veya bunun bir fonksiyonu çıkarılır ve çıktı numarası olarak döndürülür. Bu adım genellikle istatistiksel özellikleri iyileştirmek için ek karıştırma veya ayarlama işlemlerini içerir.
- Aralık eşleme: Ham çıktı, genellikle büyük bir tamsayı veya bir bit dizisi, istenen aralığa eşlenir. 1 ile 100 arasındaki bir sayı için, ham çıktı bölme veya modüler aritmetik kullanılarak ölçeklendirilir. Burada dikkatli olunmalıdır: Basit modüler indirgeme, çıktı aralığı üretecin çıktı alanına eşit olarak bölünmediğinde sapmaya neden olur.
- Tekrarlama: 2'den 4'e kadar olan adımlar, istenen her bir sonraki sayı için tekrarlanır. Durum gelişmeye devam ederek dizideki bir sonraki değeri üretir.
Jeneratör Kalitesini Belirleyen Temel Özellikler
Tüm sayı üreteçleri eşit değildir. Bunları değerlendirmek ve karşılaştırmak için aşağıdaki özellikler kullanılır.
| Mülk | Ne Anlama Geliyor? | Neden Önemli? |
|---|---|---|
| Dönem | Tekrarlanmadan önceki dizinin uzunluğu | Kısa süreler, uzun simülasyonlarda tekrara neden olarak korelasyonu ortaya çıkarır. |
| Tekdüzelik | Uzun vadede her olası çıktı değeri eşit sıklıkta ortaya çıkar. | Tekdüze olmayan çıktı, örnekleme, oyunlar ve simülasyonlarda sapmalara neden olur. |
| Bağımsızlık | Önceki sonuçları bilmek, gelecekteki sonuçlar hakkında hiçbir bilgi vermez. | Birbiriyle ilişkili çıktılar istatistiksel testleri geçersiz kılar ve tahmin saldırılarına olanak tanır. |
| Öngörülemezlik | Bir gözlemci, geçmiş çıktılardan gelecekteki değerleri belirleyemez. | Kriptografik uygulamalar için vazgeçilmez; tekrarlanabilir simülasyonlar için önemsiz. |
| Tekrarlanabilirlik | Aynı tohum her zaman aynı diziyi üretir. | Hata ayıklama, bilimsel tekrarlanabilirlik ve prosedürel üretim için gereklidir. |
| Hız | Jeneratörün ne kadar hızlı çıktı ürettiği | Yüksek işlem hacmi gerektiren simülasyonlar saniyede milyarlarca sayı gerektirebilir. |
| Eyalet büyüklüğü | İçsel durumun ne kadar bellek kapladığı | Gömülü sistemler ve paralel yürütme için uygunluğu etkiler. |
Sayı Üreticilerinin İstatistiksel Testi
Sözde rastgelelik matematiksel bir garanti değil, istatistiksel bir özellik olduğundan, üreteçler tespit edilebilir kalıpları araştıran standartlaştırılmış test paketleri kullanılarak değerlendirilir.
- NIST İstatistiksel Test Paketi (SP 800-22): Frekans, blok frekansı, çalışma süreleri, en uzun çalışma süreleri, ikili matris sıralaması, spektral (DFT), örtüşen şablonlar, evrensel istatistiksel, doğrusal karmaşıklık, seri, yaklaşık entropi, kümülatif toplamlar, rastgele sapmalar ve rastgele sapma varyantlarını kapsayan on beş test. Kriptografik sertifikasyon için gereklidir.
- Diehard testleri: George Marsaglia tarafından geliştirilen, Doğum Günü Aralıkları testi, Çakışan Permütasyonlar ve Sıkıştırma testi gibi bir dizi test. Tarihsel olarak etkiliydi; ancak günümüzde büyük ölçüde yerini yeni testlere bırakmıştır.
- TestU01: Montreal Üniversitesi'nde geliştirilen, üç ana test bataryası (SmallCrush, Crush ve BigCrush) içeren kapsamlı bir C kütüphanesi; BigCrush en zorlu olanıdır. Mersenne Twister, BigCrush testlerinin birçoğunda başarısız olurken; Xoshiro256** ve PCG tüm testlerden geçer.
- PractRand: Daha kısa testlerin gözden kaçırdığı ince, uzun menzilli korelasyonları tespit etmek için çok uzun dizileri (terabaytlarca çıktı) işleyebilen modern bir test paketi.
Belirli bir test paketindeki tüm testlerden geçen bir jeneratörün rastgele olduğu kanıtlanmaz; bu testlerin aradığı belirli kalıplardan yoksun olduğu kanıtlanır. Bu ayrım temeldir: istatistiksel testler kalite kanıtı sağlar, öngörülemezliğin matematiksel kanıtını değil.
Sayı Üreticiyi Etkili Kullanmanın Yolları: Strateji ve Pratik Taktikler
Bir sayı üreteciyi etkili bir şekilde kullanmak için, üretmeden önce aralığınızı ve miktarınızı tanımlayın, kullanım durumunuza uygun doğru üreteç türünü seçin (gerçek rastgele veya sözde rastgele) ve aracın görevinizin istatistiksel gereksinimleriyle eşleştiğini doğrulayın. Çoğu hata, uyumsuz ayarlardan, benzersizlik gerektiğinde tekrarlanan çıktılardan ve güvenlik açısından hassas işler için düşük kaliteli bir üreteç kullanmaktan kaynaklanır.
Doğru Sonuçları Elde Etmek İçin Adım Adım Strateji
Adım 1: Aralığınızı ve Parametrelerinizi Tanımlayın
Herhangi bir alete dokunmadan önce, tam olarak neye ihtiyacınız olduğunu yazın. Belirsiz girdiler işe yaramaz sonuçlar doğurur. Şunları belirtin:
- Minimum değer: Çıktınızda kabul edilebilir en düşük sayı (örneğin, 1, 0 veya negatif bir sayı).
- Maksimum değer: İzin verilen en yüksek sayı (örneğin, 100, 1000 veya özel bir üst sınır)
- Miktar: Tek bir çekilişte kaç sayıya ihtiyacınız var?
- Benzersizlik şartı: Yinelenen sayılara izin verilip verilmeyeceği veya her sayının yalnızca bir kez görünmesi gerekip gerekmediği.
- Sayı türü: Yalnızca tam sayılar veya belirtilen sayıda ondalık basamağa sahip ondalık sayılar.
- Sıralama: Çıktının sıralanması, karıştırılması veya ham üretim sırasına göre bırakılması gerekip gerekmediği.
Bu adımı atlamak, zaman kaybının en yaygın nedenidir. Çekiliş düzenleyen biri, aynı bilet numarasını iki kez çekerse, baştan başlamak zorunda kalabilir.
Adım 2: Amacınıza Uygun Jeneratörü Seçin
Tüm sayı üreteçleri eşdeğer değildir. Aşağıdaki tablo, yaygın kullanım durumlarını uygun üreteç türüyle eşleştirmektedir.
| Kullanım Durumu | Önerilen Jeneratör Tipi | Temel Gereksinim |
|---|---|---|
| Piyango çekilişleri, piyangolar, hediyeler | Gerçek rastgelelik (donanım tabanlı veya atmosferik gürültü) | Kamuoyu tarafından doğrulanabilir, tarafsız |
| İstatistiksel örnekleme, araştırma | Kriptografik olarak güvenli PRNG veya gerçek rastgele sayı üreteci | Tekdüze dağılım, tekrarlanabilirlik isteğe bağlı. |
| Kriptografik anahtarlar, parolalar, belirteçler | Kriptografik olarak güvenli PRNG (CSPRNG) | Öngörülemezlik, entropi kaynaklı |
| Oyun mekaniği, simülasyonlar | Standart PRNG (Mersenne Twister, xoshiro) | Hız, tekrarlanabilirlik ve başlangıç değeri |
| Öğretim, sınıf içi etkinlikler | Herhangi bir basit PRNG veya çevrimiçi araç | Kullanım kolaylığı, görsel çekicilik |
| A/B testi, rastgele atama | Tekrarlanabilirlik için sabit bir başlangıç değeriyle PRNG | Denetlenebilirlik, tutarlı tekrar çalıştırmalar |
| PIN kodları, doğrulama numaraları | CSPRNG | Öngörülebilir kalıplar yok. |
3. Adım: Aracı Doğru Şekilde Yapılandırın
Seçtiğiniz jeneratörü açın ve oluştur düğmesine tıklamadan önce mevcut tüm parametreleri ayarlayın. İhtiyaçlarınıza uygun olduklarını doğrulamadığınız sürece varsayılan ayarlara güvenmeyin. Yaygın yapılandırma alanları şunlardır:
- Aralık alanları: Varsayılan değer doğru görünse bile, minimum ve maksimum değerlerinizi açıkça girin.
- Sayı alanı: Gerekli çıktı sayısını tam olarak ayarlayın.
- Benzersiz/tekrarsız seçeneği: Her sayının yalnızca bir kez görünebileceği çekilişler için bunu etkinleştirin.
- Biçimlendirme seçenekleri: Sonuçların liste, virgülle ayrılmış veya tablo olarak görüntülenip görüntülenmeyeceğini seçin.
- Başlangıç değeri girişi (gelişmiş): Araştırma veya testlerde tekrarlanabilir sonuçlar için, sabit bir başlangıç değeri girin ve kaydedin.
Adım 4: Çıktıyı Oluşturun ve Doğrulayın
Oluşturduktan sonra çıktıyı hemen kullanmayın. Hızlı bir doğrulama işlemi gerçekleştirin:
- Tüm sayıların belirttiğiniz aralıkta olduğundan emin olun.
- Benzersizlik gerekiyorsa, yinelenen kayıtları kontrol edin.
- Sayıların istediğinizle eşleştiğini doğrulayın.
- Araştırma amaçlı kullanım için, dağıtım anormalliklerini tespit etmek amacıyla birden fazla parti üzerinde temel bir frekans kontrolü gerçekleştirin.
- Güvenlik amacıyla, güvenli olmayan bir ortamda ham çıktıyı asla görüntülemeyin veya kaydetmeyin.
Adım 5: Sonuçları Kaydedin ve Belgeleyin
Resmi kullanımlar (yarışmalar, araştırmalar, denetimler) için üretim olayını belgeleyin. Kullanılan aracı, URL'yi veya yazılım sürümünü, tarih ve saati, girilen parametreleri ve çıktının kendisini kaydedin. Bu, anlaşmazlıklara karşı koruma sağlayabilecek bir denetim izi oluşturur. RANDOM.ORG gibi bazı çevrimiçi hizmetler, bu amaç için özel olarak her üretim olayı için bir sertifika veya zaman damgası düzenler.
Belirli Senaryolar İçin Pratik Taktikler
Fuar Çekilişi veya Piyango Düzenlemek
- Toplam katılımcı sayısını (N) belirtmeden önce tüm katılımcılara ardışık numaralar atayın (1'den N'ye kadar).
- Gerçek bir rastgele sayı üreteci kullanın, sözde rastgele sayı üreteci (PRNG) kullanmayın, böylece sonuç bir tohum değerinden tersine mühendislikle elde edilemez.
- İhtilafları önlemek için tanıkların önünde oluşturun veya ekran kaydı yapın.
- Birden fazla kazanan belirleyecekseniz, bir kişinin iki kez kazanmasını engellemek için "tekrar etme" ayarını etkinleştirin.
- Çekilişin adil olup olmadığını herkesin doğrulayabilmesi için, tüm parametre setini sonuçla birlikte yayınlayın.
İstatistiksel Araştırmalar İçin Sayılar Üretme
- Tekdüze, normal veya başka bir dağılıma ihtiyacınız olup olmadığına önceden karar verin; çoğu varsayılan üreteç yalnızca tekdüze dağılımlar üretir.
- Aynı deneyin birden fazla tekrarında tutarlı sonuçlar elde etmeniz gerektiğinde sabit bir başlangıç değeri kullanın.
- Gerekenden daha büyük bir örneklem oluşturun ve yeniden deneme yapmak yerine hedef aralığınızın dışındaki değerleri atın; böylece önyargı oluşmasını önleyin.
- Rastgeleliğin kalitesi sonuçlarınız için önemliyse, örnekleminizi ki-kare uyumluluk testi veya Kolmogorov-Smirnov testi ile test edin.
Güvenli Token ve Kod Oluşturma
- Her zaman bir CSPRNG kullanın. Python'da secrets.randbelow() veya secrets.token_hex() kullanın. JavaScript'te crypto.getRandomValues() kullanın. Güvenlik amacıyla asla Math.random() kullanmayın.
- Tehdit modelinize uygun yeterli entropiye sahip belirteçler oluşturun — 6 haneli sayısal bir PIN'in entropisi yalnızca yaklaşık 20 bittir; bu da düşük riskli doğrulamanın ötesindeki her şey için zayıftır.
- Birbirine benzer kodlar (örneğin, 000001, 000002) oluşturmaktan kaçının; numaralandırma saldırılarını önlemek için geniş bir aralık kullanın.
- Oluşturulan token'ları düz metin olarak değil, şifrelenmiş halde saklayın.
Oyunlarda ve Simülasyonlarda Sayı Üreticilerinin Kullanımı
- Hız ve periyot uzunluğuna uygun bir PRNG algoritması seçin — Mersenne Twister'ın periyodu 2 19937 −1'dir, bu da onu uzun simülasyonlar için uygun hale getirir.
- Tekrarlanan çalıştırmalarda özdeş dizilerin oluşmasını önlemek için, sözde rastgele sayı üretecinizi yüksek entropili bir kaynaktan (sistem saati ve donanım gürültüsünün birleşimi) besleyin.
- Çok oyunculu modda adaleti sağlamak için, sayıları sunucu tarafında oluşturun ve tüm oyuncular hamlelerini yaptıktan sonra ortaya çıkarın (hamle yapma-ortaya çıkarma şeması).
- Oyun testlerinde kullanılan günlük kayıt dosyaları, hata ayıklama için oyunun tam durumlarını yeniden oluşturmanıza olanak tanır.