Bu rastgele sayılar ne olması gerektiği konusunda önyargı yaratacak mı?


11

Rastgele oluşturulmuş 80'den fazla milyon ve sıfır içeren bir veri dosyası olduğunu varsayın.

Bu dosyadan, rastgele ondalık tam sayıların bir listesini oluşturmak istiyoruz.

Bu dönüşümü planlıyoruz.

  1. 80 milyon basamağı 4 ikili basamaklı gruplara ayırın.
  2. Her 4 basamaklı ikiliyi ondalık biçime dönüştürün.
  3. 9'dan büyük tüm ondalık değerleri atın.

Bu, 0-9 arasında rastgele bir tamsayı dizisi ile sonuçlanmalıdır.

İşte endişe. 10 ila 15 arasındaki değerlere karşılık gelen 4 ikili basamaklı 6 gruptan oluşan 24 ikili basamak 17 olanı ve sadece 7 sıfır içerir. Bu dengesizlik, çift ve tek tamsayıların dağılımını etkileyecek mi, yoksa ondalık basamakların son dizesinin rasgeleliğini herhangi bir şekilde tehlikeye atacak mı?

Güncelleme: Yayınlanan cevaplardan, yukarıda sayılan yöntemin sağlam olduğu anlaşılıyor. Bu sonuca katılıyorum. Ancak, neden hala ikili dizeden sıfırların iki katından fazla kaldırmanın sonucu daha az tek sayıya doğru saptırmadığını anlamıyorum. Açıklama arıyorum.


9
Daha verimli yöntemler var. Örneğin, bit dizesini 10'luk gruplara ayırabilir, üç basamaklı temsiller tabanına 10 dönüştürebilir ve 1000 veya daha büyük değerlere sahip olanları atabilirsiniz. Bu, bitlerin yalnızca% 62.5'ini değil,% 97.6'sını kullanır. Bundan daha iyisini yapamazsın. (681 grupları kullanabilir ve bunları 205 basamaklı taban-10 dizelerine dönüştürebilir, böylece bitlerin neredeyse%
99,7'sini kullanabilirsiniz

Yanıtlar:


18

Sayıp görelim. Dosyanın oluşturulmasıyla, tüm 4 bit dizelerin eşit olması muhtemeldir. Bu tür 16 dize vardır. İşte buradalar:

 0. 0000
 1. 0001
 2. 0010
 3. 0011
 4. 0100
 5. 0101
 6. 0110
 7. 0111
 8. 1000
 9. 1001
10. 1010
11. 1011
12. 1100
13. 1101
14. 1110
15. 1111

Prosedürünüz 10'dan 15'e kadar dizeleri atar. Bu nedenle, gerçekten kullandığınız durumlarda, her biri eşit şekilde olası olan 0'dan 9'a kadar seçim yapacaksınız. Oluşturulan ondalık basamakların birbirinden bağımsız olduğunu biliyoruz, çünkü her biri 4 bitlik ayrı bir dize kullanıyor ve tüm bitler bağımsız. Prosedürünüz basit bir ret örneklemesi oluşturmaktadır .


5
Bu mantığı açıkça görüyorum. Yine de 0'dan daha ikili 1'leri attığımdan endişeliyim. Bu dengesizliğin neden bir etkisi yok?
Joel W.

5
@JoelW Sanırım argümanını göremiyorum. Son dağıtım, bitlerle değil ondalık basamaklarla ilgilidir, bu nedenle bitlerin dağılımı önemsizdir.
Kodiolog

7
Bu doğrudur, ancak soruyu sadece kısmen ele almaktadır. Sorunun "herhangi bir yolla uzlaşmak ... herhangi bir şekilde" kısmını ele almak için, sonuçta elde edilen ondalık basamakların mükemmel bir yaklaşımla bağımsız olduğu da tespit edilmelidir . Tamlık uğruna, bir açıklama cümlesini bu (açık) sonuca adamaya değer.
whuber

7
Joel, nereden geldiğini görüyorum. Burada bir yanlış algılama olabilir: süreci tersine çeviremezsiniz. Ondalık basamak akışından bir bit akışını yeniden oluşturmak istiyorsanız, 8 ve 9'ların tümünü silmek ve kalan basamakları ikili üçlüye dönüştürmek gibi bir şey yapmanız gerekir. Bu, dengeyi eski haline getirecektir. Aslında, bu "gidiş-dönüş yolculuğunun" orijinal akışınızı dört-bit halkalara ayırmak ve en önemli bitlerini atmak anlamına geldiğini görmek kolaydır, bu da 60 milyon bitlik güzel bir şekilde dağılmış bir dizi bırakır.
whuber

1
@whuber Yeterince adil; katma.
Kodiolog

4

Atılan bazı değerleri simüle ettiğiniz ve tutulanlar da dahil olmak üzere tüm değerler aynı olasılıkla üretildiğinden önyargı yok : resim açıklamasını buraya girin

Yukarıdaki grafiğin R kodu

generza=matrix(sample(0:1,4*1e6,rep=TRUE),ncol=4)
uniz=generza[,1]+2*generza[,2]+4*generza[,3]+8*generza[,4]
barplot(hist(uniz[uniz<10],breaks=seq(-0.5,9.5,le=11))$counts,col="steelblue")
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.