Bu üreteç neye uygun, neye değil
Sözde rastgele üreteçler neye uygun oldukları bakımından çok büyük farklılıklar gösterir. Bu üreteç hızlı, yinelenebilir ve gündelik kullanım için istatistiksel olarak iyi davranışlıdır — ve kesinlikle bir sır kaynağı değildir.
| Kullanım | Uygun mu? | Neden |
|---|---|---|
| Öğretim, benzetim, örnekleme | Evet | Çekilişin yinelenebilir olması burada avantajdır |
| Kazanan seçmek, zar, çekiliş numaraları | Evet, yeni bir tohumla | Tohumu bilen herkes çekilişi yineleyebilir |
| Parolalar, anahtarlar, belirteçler, oturum kimlikleri | Hayır | Durum çıktıdan geri elde edilebilir; onun yerine parola üretecini kullanın |
| Düzenlemeye tabi oyun ya da kumar | Hayır | Oralarda sertifikalı donanım ya da kriptografik üreteç gerekir |
- Aralığın iki ucu da dahildir, bu yüzden 1'den 100'e bir aralık 100 olası değer içerir.
- İadesiz çekimde çekiliş sayısı aralıktaki değer sayısını aşamaz. Hesaplayıcı sessizce yinelemek yerine reddeder.
Sözde rastgele üreteç nedir
Sözde rastgele sayı üreteci, rastgelelik için yapılan istatistiksel sınamaları geçen bir dizi üreten belirlenimci bir algoritmadır. Fiziksel anlamda rastgele değildir: sabit bir yineleme bağıntısıdır ve verilen bir başlangıç değerinden — tohumdan — her zaman aynı diziyi üretir.
Burada kullanılan, George Marsaglia'nın 2003'te Journal of Statistical Software dergisinde yayımladığı 32 bitlik xorshift üretecidir. Bir değere ve onun kaydırılmış kopyalarına tekrar tekrar dışlayıcı-veya uygulayarak çalışır; kaydırma üçlüsü, dizinin yinelenmeden önce sıfır olmayan bütün 32 bitlik durumlardan geçmesini sağlayacak biçimde seçilmiştir.
Tohum kullanmak bir kısıt değil bilinçli bir tercihtir. Bu sitedeki her hesaplayıcı girdilerinin saf bir fonksiyonudur ve sonuçları yinelenebilir ve denetlenebilir kılan da tam olarak budur. Ayrıca saatle çalışan bir üretecin veremeyeceği bir şeyi verir: tohumu sayılarınızın yanında belirtin, herkes çekilişinizi birebir yineleyebilsin.
Rastgele sayı üreteci nasıl kullanılır
- En küçük ve en büyük değeri belirleyin. Aralığın iki ucu da dahildir.
- Kaç sayı çekileceğini seçin.
- Yinelemeye izin verilip verilmeyeceğine karar verin. İadesiz çekimde hiçbir değer iki kez çıkamaz, bu yüzden aralığın içerdiğinden fazla sayı çekemezsiniz.
- Farklı bir çekiliş istediğinizde tohumu değiştirin. Aynı tohum her zaman aynı sayıları döndürür.
Sayılar nasıl üretilir
Xorshift yineleme bağıntısı her çekiliş için 32 bitlik bir durumu üç kez dönüştürür, sonra 2^32'ye bölerek sıfır ile bir arasında, biri içermeyen bir değer verir. Bunu aralığın büyüklüğüyle çarpıp aşağı yuvarlamak onu bir tam sayıya eşler.
İadesiz çekim, aralık üzerinde kısmi bir Fisher-Yates karıştırması kullanır. Her çekiliş kalan bir öğeyi yerine takas eder; böylece tek bir geçişte düzgün rastgele bir altküme seçilir ve havuz azaldıkça tıkanan 'çek ve yeniden dene' yaklaşımının aksine takılıp kalmaz.
Sık yapılan hatalar
- Sözde rastgele bir üreteci gizli kalması gereken herhangi bir şey için kullanmak. Dizi bütünüyle tohumla belirlenir.
- Tohumu değiştirmeden yeni sayılar beklemek. Yinelenebilirlik zaten amaçtır ve tohum onun kumandasıdır.
- Üst sınırın dışarıda bırakıldığını sanmak. Burada aralığın iki ucu da dahildir.
- Aralığın içerdiğinden daha çok farklı değer istemek.
- Birbirine benzeyen değerlerden oluşan bir diziyi arıza saymak. Kümelenme rastgele dizilerin olağan bir özelliğidir ve yokluğu varlığından daha şüphe vericidir.
Sıkça Sorulan Sorular
Aynı tohum neden hep aynı sayıları veriyor?
Çünkü sözde rastgele üreteç belirlenimci bir yineleme bağıntısıdır ve tohum onun başlangıç durumudur. Bu bir kusur değil bir üstünlüktür: tohumu belirtmek herkesin çekilişinizi birebir yinelemesine olanak verir ve yinelenebilir araştırmanın ve sınıf gösterimlerinin ihtiyacı tam olarak budur. Farklı bir çekiliş için tohumu değiştirin.
Ödül çekilişi için yeterince rastgele mi?
Resmî olmayan bir çekiliş için evet; yeter ki katılımcıların öngöremeyeceği bir tohum seçin ve sonucun denetlenebilmesi için onu sonradan yayımlayın. Düzenlemeye tabi oyunlar için hayır — oralarda sertifikalı donanım üreteçleri ya da kriptografik olarak güvenli algoritmalar gerekir.
Bununla parola üretebilir miyim?
Hayır. Xorshift üretecinin iç durumu, çıktısının kısa bir parçasından geri elde edilebilir; bu yüzden ondan türetilen her şey öngörülebilir. Onun yerine bu sitedeki, işletim sisteminin kriptografik olarak güvenli rastgelelik kaynağından çeken parola üretecini kullanın.
İadesiz çekim ne demek?
Çekiliş toplarını çekerken olduğu gibi, hiçbir değerin birden fazla kez çıkamaması demektir. Her çekiliş havuzdan bir değeri çıkardığı için aralığın içerdiğinden fazla sayı çekemezsiniz — beşlik bir aralıktan altı farklı değer çekmek olanaksızdır.
Sayılar düzgün dağılmış mı?
Evet, alttaki üretecin kesinliği ölçüsünde. Aralıktaki her değer eşit olasılıdır ve iadesiz kip, belirli büyüklükteki her altkümeyi eşit olasılıkla seçen kısmi Fisher-Yates karıştırmasını kullanır.
Kaynaklar
- Marsaglia G. Xorshift RNGs. Journal of Statistical Software 2003; 8(14): 1-6. doi:10.18637/jss.v008.i14.
- Knuth DE. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 3rd edition. Addison-Wesley, 1997 — random number generation and statistical testing.
- Fisher RA, Yates F. Statistical Tables for Biological, Agricultural and Medical Research. Oliver and Boyd, 1938 — the shuffle used for sampling without replacement.
- L'Ecuyer P, Simard R. TestU01: A C library for empirical testing of random number generators. ACM Transactions on Mathematical Software 2007; 33(4): 22.