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..R−1]N[0,N−1]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,…,rm−1)f(r0,…,rm−1)=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ı .[ kr≥kN[kN..R−1]
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 - kNuddRd−kNudRdmodNuR 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