Ben de aynı problemi yaşadım. Her bir öğenin olasılığı olan ve öğelerinin olasılıkları birleştiği bir küme göz önüne alındığında, bir örneği verimli bir şekilde, yani herhangi bir şeyi sıralamadan ve tekrar tekrar kümeyi tekrarlamadan çizmeyi istedim .
Aşağıdaki işlev aralığı içinde en düşük düzgün dağılımlı rasgele sayı çizer . den rasgele bir sayı olsun .N[a,1)r[0,1)
next(N,a)=1−(1−a)⋅r√N
Bir çizmek için bu fonksiyonu kullanarak artan bir dizi ait homojen [0,1 rastgele sayı dağıtılmaktadır). İşte olan bir örnek :(ai)NN=10
a0=next(10,0)
a1=next(9,a0)
a2=next(8,a1)
…
a9=next(1,a8)
Düzgün dağılmış sayılardan oluşan artan diziyi çizerken, (ancak sonlu) dağılımınızı temsil eden olasılık kümesini yineleyin . Letyineleyici ol ve . Çizdikten sonra , artım kadar sıfır ya da daha fazla kez . Daha sonra numunenize ekleyin ve çizerek devam edin .(ai)P0≤k<|P|pk∈Paik∑p0…pk>aipkai+1
Operasyon dizisinin ve örneklem büyüklüğü örnek :{(1,0.04),(2,0.5),(3,0.46)}N=10
i a_i k Toplam Çizim
0 0.031 0 0.04 1
1 0.200 1 0.54 2
2 0.236 1 0.54 2
3 0,402 1 0,54 2
4 0,488 1 0,54 2
5 0,589 2 1,0 3
6 0,625 2 1,0 3
7 0,638 2 1,0 3
8 0,738 2 1,0 3
9 0.942 2 1.0 3
Örnek:(1,2,2,2,2,3,3,3,3,3)
Eğer merak ise fonksiyonu: Bu biri o olasılık tersi olan homojen aralığı içinde rasgele sayılar yalan dağıtılmış ile .nextN[a,x)x≤1