Rastgele örnekleme, rastgele sayıların gerçekten tekdüze bir dağılımını elde etmenin tek yolu mudur?


21

Tekdüze dağılımlı aralığında sayılar çıkaran rasgele bir ve aralığında düzgün dağılımlı rasgele sayılar .[ 0 .. N - 1 ][0..R1][0..N1]

ve eşit olarak bölmediğini varsayalım ; Bir almak için gerçekten homojen dağılımını kullanabileceğimiz ret örnekleme yöntemi:N RN<RNR

  • Eğer büyük tamsayıdır gibi olduğuk N < RkkN<R
  • içinde rasgele bir sayı seçin[ 0 .. R - 1 ]r[0..R1]
  • eğer ardından çıkış , aksi diğer rasgele sayılar r', r" ile çalışırken, ... tutmak koşul yerine getirilene kadarrr<kNrmodN
Reddetme örneklemesi gerçekten tekdüze bir ayrık dağılım elde etmenin tek yolu mudur?

Cevabınız evet ise, neden?

Not: N>R fikir aynıysa: [0..R ^ m-1] r de rastgele bir r' sayısı oluşturun [0..Rm1],Rm>=N , örneğin r=R(...R(Rr1+r2)...)+rm burada r_i [0..R-1]ri aralığında rasgele bir sayıdır[0..R1]


Yanıtlar:


13

Evet ve hayır, “tek yolla” ne demek istediğinize bağlı olarak. Evet, sona erdirilmesi garanti edilen bir yöntem olmadığından, yapabileceğiniz en iyi şey ( ve jenerik değerleri için ) olasılık 1 ile sona eren bir algoritmadır. Hayır, çünkü “atıkları” küçük yapabilirsiniz istediğiniz gibi.RNR

Genel olarak garantili fesih neden imkansız

Bir deterministik hesaplama motorunuz (bir Turing makinesi veya teknenizde yüzen herhangi bir şey) ve ayrıca setinin rastgele elemanlarını üreten bir kehanetiniz olduğunu . Hedef bir eleman oluşturmak için -eleman grubu . Motorunuzun gücü sadece kehanet tarafından döndürülen değerlerin sırasına bağlıdır; bu potansiyel olarak sonsuz dizinin .[ 0 .. R - 1 ] N [ 0 , N - 1 ] f ( r 0 , r 1 , r 2 , )R[0..R1]N[0,N1]f(r0,r1,r2,)

Motorunuzun kehaneti en fazla kez çağırdığını varsayın . Kahinenin kereden az çağrıldığı izler olabilir ; eğer öyleyse, oracle ekstra kez çağırmak, her zaman tam olarak kez denir , çıktıyı değiştirmez. Dolayısıyla, genelliği kaybetmeden, kâhin tam olarak kere denildiğini varsayıyoruz . Daha sonra sonuç olasılığı dizilerinin sayısıdır bu şekilde . Kehanet tekdüze rastgele bir jeneratör olduğundan, her dizi eşlenebilir ve olasılığı vardır . Dolayısıyla, her sonucun olasılığı biçimindedir.m m m x ( r 0 , , r m - 1 ) f ( r 0 , , r m - 1 ) = x 1 / R m A / R m A 0 R mmmmmx(r0,,rm1)f(r0,,rm1)=x1/RmA/Rmburada , ile arasında bir tamsayıdır .A0Rm

Eğer bölme bazıları için , o zaman üzerinde üniform dağılımını üretebilir rastgele arayarak elemanları kez (bu okuyucuya bir egzersiz bırakılır). Aksi takdirde, bu imkansızdır: olasılığı ile bir sonuç elde etmenin bir yolu yoktur . Koşulun, tüm ana faktörlerinin de faktörleri olduğunu söylemeye eşdeğer olduğunu unutmayın (bu, sorunuza yazdığınızdan daha izin vericidir; örneğin, 6 taraflı bir fuarla 4 arasında rastgele bir öğe seçebilirsiniz. ölmek, 4 4 bölünmez rağmen 6).R m m N m 1 / N N RNRmmNm1/NNR

Atıkların azaltılması

Stratejinizde, , hemen yeniden çizmeniz gerekmez. Sezgisel olarak, 'de karışımda tutabileceğiniz biraz entropi kaldı .[ krkN[kN..R1]

Bir an için sonsuza kadar altında rastgele sayılar üretmeye devam edeceğinizi ve çekiş yaparak bir seferde bunlardan oluşturduğunuzu varsayın . Bu gruplandırılmış nesil basit ret örnekleme yaparsak, üzerinde atık olduğunu çizer yani kalan, çekiliş sayısına bölünür. Bu kadar az olabilir . Zaman ve göreceli asal, sen yeterince büyük değerler çekme atık keyfi üretebilen . ve genel değerleri içinu d d R d - kNuddRdkNudRdmodNuR N d R N gcd ( R , N ) N / gcd ( R , N )gcd(R,N)RNdRN, hesaplama daha karmaşıktır, çünkü ve üretimini ayrı ayrı dikkate almanız gerekir, ancak yine de atığı yeterince büyük gruplarla keyfi olarak küçük yapabilirsiniz.gcd(R,N)N/gcd(R,N)

Uygulamada, nispeten verimsiz rasgele sayılarla bile (örneğin kriptografide), küçük olmadığı sürece basit ret örneklemesi dışında bir şey yapmaya nadiren değer . Örneğin, tipik olarak 2'nin bir güç olduğu ve tipik olarak yüzlerce veya binlerce bit olduğu kriptografide, tek tip rasgele sayı üretimi genellikle istenen aralıkta düz ret örneklemesi ile ilerler.R NNRN


İlk kanıt kusurlu: varlığı çok güçlü. Birçok öğeyi keyfi olarak tüketen, ancak her zaman sonlanan bir makineye sahip olabiliriz . Temel olarak, bir diziyi (asla sona ermeyen diziyi) hariç tutmak istiyoruz, ancak sonlu birçok hariç tümünü hariç tutuyorsunuz. m
Raphael

@ Raphael Ne demek istediğini anladığımdan emin değilim. Böyle bir makineye örnek verebilir misiniz?
Gilles 'SO- kötü olmayı bırak

Endişem çok geneldi. Burada - girişin olmaması durumunda - haklısınız. Tüm hesaplamalar sona ererse, sonlu çok vardır (girdi yok, adım başına sonlu karar sayısı, sonlu bir ağaç ergo), bu nedenle size veren en uzun vardır . m
Raphael

@Raphael Yorumunuz bir TCS seyircisi için daha iyi bir sunum düşünmemi sağlıyor: RNG'yi bir kehanet yerine bir TM'nin girişi haline getirin. TM'nin sona erdiğini varsayıyoruz (aksi takdirde algoritma yanlıştır). Bir varsa girişi ne olursa olsun, en az TM bakar şekilde giren hücre, ve daha sonra <tarafından vesaire bölünebilir vesaire olamaz equiprobable sonuçlar>. Aksi takdirde, tüm , en az çekme gerektirme olasılığı en az . m R m N m m R - mmmRmNmmRm
Gilles 'SO- kötü olmayı bırak

1
@Raphael: König'in lemması, makine her zaman sona ererse, aslında çalışma süresinde bir üst sınır olduğunu gösterir. Bu, RNG'nin çıktı seti sonlu olduğu sürece çalışır (ve aksi halde önemsizdir).
Yuval Filmus

6

Bazı kesin anlamda, gerek teoremi gösterir kodlama Shannon kaynak örnekleri Çeşidi (ortalama) tipte bir rasgele sayı üretmek için . Daha doğrusu, Shannon birinci tip örnekleri verilen , yüksek olasılıkla ikinci tip örnekleri veren (verimsiz) bir algoritma verir . Ayrıca yüksek olasılıkla örneklerinin verilmesinin imkansız olduğunu göstermektedir.[ 0 , , R - 1 ] [ 0 , , N - 1 ] m m ( log N / log R - ϵ ) m ( log N / log R + ϵ )logN/logR[0,,R1][0,,N1]mm(logN/logRϵ)m(logN/logR+ϵ)

Shannon'ın teoremi, daha genel bir çarpık girdi dağılımı (ve muhtemelen de çarpık çıktı dağılımı) durumunda çalışır. Bu durumda, logaritmayı entropiyle değiştirmelisiniz. Teorem tarafından verilen algoritma rastgele tanımlanırken, bazı durumlarda (bir şekilde daha kötü performans pahasına) derandomize etmek mümkündür.


5

Aslında hayır, reddetme örneklemesi tek yoldan uzak değildir. Ne yazık ki, bilgisayarların tüm bilgileri bit olarak sakladığı ve bu nedenle sadece rastgele bilgi bitlerini işleyebileceği düşünüldüğünde, ikili taban gelişimi sonsuzsa, aralığının düzgün rastgele bir değişkenini çizmek için herhangi bir algoritma sonsuz olacaktır .NNN

Bu teorem, DDG ağaçlarının (ayrık dağıtım üreten ağaçlar) çerçevesini geliştiren Knuth ve Yao (1976) tarafından klasik bir sonuçtur.

Gilles'in maruz kaldığı yöntemler, reddetme nedeniyle ortaya çıkan atıkları azaltmak için yapılan tipik bir şeydir, ancak tabii ki Knuth ve Yao'nun ağaçlarını takip ederek üretebilirse, çok, çok daha verimlidir - rastgele bitlerin ortalama% 96'sı kaydedilir.

Bu konu hakkında aşağıdaki CStheory yayınında daha fazla bilgi verdim .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.