İlk olarak, günümüzün bilgisayarında "rastgele sayılar" oluşturduğu gerçek rastgelelik yoktur . Tüm sözderandom jeneratörleri deterministik yöntemler kullanır. (Muhtemelen, kuantum bilgisayarları bunu değiştirecek.)
Zor olan iş, gerçekten rastgele bir kaynaktan gelen verilerden anlamlı bir şekilde ayırt edilemeyen çıktı üreten algoritmalara ulaşmaktır.
Bir tohum ayarlamanın sizi uzun bir sözde rasgele sayılar listesinde belirli bir başlangıç noktasında başlatması konusunda haklısınız. R, Python ve benzerlerinde uygulanan üreticiler için liste oldukça uzundur. Yeterince uzun, mümkün olan en büyük simülasyon projesinin bile, jeneratörün "periyodunu" geçmeyecek, böylece değerler yeniden çalışmaya başlayacaktır.
Pek çok sıradan uygulamada, insanlar tohum koymuyorlar. Ardından tahmin edilemeyen bir tohum otomatik olarak toplanır (örneğin işletim sistemi saatindeki mikrosaniyelerden). Genel olarak kullanılan sahte jeneratörler, daha önce tatmin edici olmayan jeneratörlerle taklit edilmesinin zor olduğu problemlerden oluşan test bataryalarına maruz bırakılmıştır.
Genellikle, bir jeneratörün çıktısı, pratik amaçlar için, rastgele bir biçimde rastgele seçilen sayılardan ayırt edilebilir olmayan değerlerden oluşurDaha sonra bu sahte numaralar manipüle edilir, böylece binom, Poisson, normal, üstel, vb. Gibi diğer dağıtımlardan rastgele örnekleme yapılanlarla eşleşilir.(0,1).
Bir jeneratörün bir test aşağıdaki gibi gerçekleştirilir gözlemlerine 'de art arda gelen çiftleri olmadığını görmek için
aslında bir nokta bunlar rastgele birim kare doldurma gibi. (Aşağıda iki kez yapılır.) Hafif mermer görünüm doğal değişkenliğin bir sonucudur. Tamamen düzgün bir şekilde gri görünen bir komplo elde etmek çok şüpheli olurdu. [Bazı çözünürlüklerde, düzenli bir hareli desen olabilir; Bu sahte etkiden kurtulmak için lütfen büyütmeyi yukarı veya aşağı değiştirin.]Unif(0,1)
set.seed(1776); m = 50000
par(mfrow=c(1,2))
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
par(mfrow=c(1,1))
Bir tohum ayarlamak bazen yararlı olabilir. Bu tür bazı kullanımlar aşağıdaki gibidir:
Programlama ve hata ayıklama sırasında öngörülebilir çıktıya sahip olmak uygundur. Birçok programcı set.seed
, programın başlangıcına yazma ve hata ayıklama işlemi yapılıncaya kadar açıklama yaptı.
Simülasyon hakkında öğretirken. Öğrencilere, sample
R'deki işlevi kullanarak adil bir kalıp rulosunu taklit edebileceğimi göstermek istersem, hile yapabilir, birçok simülasyon çalıştırabilir ve hedef teorik değere en yakın olanı seçebilirim . Ancak bu, simülasyonun gerçekte nasıl çalıştığı hakkında gerçekçi bir izlenim bırakmaz.
Başına bir tohum koyarsam, simülasyon her seferinde aynı sonucu alır. Öğrenciler, amaçlanan sonuçları verdiğinden emin olmak için programımın kopyasını yazabilirler. Daha sonra, kendi simülasyonlarını kendi tohumlarıyla ya da programın kendi başlangıç yerini seçmesine izin vererek çalıştırabilirler.
Örneğin, iki adil zar toplam 10 alma olasılığıBir milyon 2-zar deneyinde yaklaşık iki ya da üç basamaklı bir doğruluk elde etmeliyim. % 95 simülasyon hatası payı yaklaşık2 √
3/36=1/12=0.08333333.
2(1/12)(11/12)/106−−−−−−−−−−−−−−−√=0.00055.
set.seed(703); m = 10^6
s = replicate( m, sum(sample(1:6, 2, rep=T)) )
mean(s == 10)
[1] 0.083456 # aprx 1/12 = 0.0833
2*sd(s == 10)/sqrt(m)
[1] 0.0005531408 # aprx 95% marg of sim err.
Simülasyon içeren istatistiksel analizleri paylaşırken.
Günümüzde birçok istatistiksel analiz bazı simülasyonları, örneğin bir permütasyon testi veya bir Gibbs örnekleyici içerir. Çekirdeği göstererek, analizi okuyan kişilerin, isterlerse sonuçları tam olarak çoğaltmalarını sağlarsınız.
Randomizasyon içeren akademik makaleler yazarken. Akademik makaleler genellikle birden fazla hakem değerlendirmesi sürecinden geçer. Bir komplo, örneğin aşırı lekelenmeyi azaltmak için rastgele pürüzlü noktaları kullanabilir. İncelemecilerin yorumlarına cevap olarak analizlerin biraz değişmesi gerekiyorsa, belirli bir ilgisiz jitter yorumunun inceleme turları arasında değişmemesi iyi olur, özellikle nitpicky hakemlerine rahatsız edici olabilir, bu yüzden jitter işleminden önce bir tohum koyarsınız.
2^19937 − 1
. Tohum, jeneratörün başladığı bu son derece uzun dizinin noktasıdır. Yani evet, determinist.