Seperti yang Anda katakan, tidak mungkin untuk memastikan bahwa setiap permutasi memiliki kemungkinan yang sama dan memastikan bahwa warna terdistribusi secara merata, karena salah satu permutasi memiliki semua merah dalam satu baris.
Metode yang sangat elegan, tetapi tentu saja tidak jelas, untuk memastikan warna didistribusikan secara merata adalah dengan memanfaatkan urutan perbedaan yang rendah.
Misalkan Anda memiliki bola, dinomori dari hingga , dan nilai seed, .N=4001Ns
Pastikan semua bola dengan warna yang sama diberi nomor urut. Artinya, dalam kasus Anda, biarkan 100 bola pertama menjadi merah, 40 berikutnya menjadi kuning, 50 berikutnya hijau, dll.
Kemudian, alokasikan bola nilainya, sedemikian rupa sehingga:
manakthxk
xk=(s+kϕ)(mod1),
- ϕ=1+5√2=1.61803399... , rasio emas
- yang operator yang mengambil bagian pecahan dari argumen(mod1)
- s adalah nilai 'seed' konstan yang Anda inginkan.
Artinya, masing-masing bola akan dialokasikan nilai yang akan selalu antara 0 dan 1.Nxk
Sekarang cukup pesan bola, dalam urutan naik sesuai dengan nilai mereka .xk
Misalnya, menggunakan nilai seed , bola akan dipesan sebagai berikut:
s=0
{B,R,K,G,R,P,Y,K,B,R,P,G,K,R,B,Y,K,B,R,P,Y,K,B,R,P,G,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,P,Y,K,B,R,P,G,K,B,R,P,G,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,B,Y,K,B,R,P,Y,K,B,R,P,G,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,P,Y,K,B,R,P,G,K,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,B,Y,K,G,R,P,Y,K,B,R,P,G,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,B,Y,K,B,R,P,Y,K,B,R,P,G,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,B,Y,K,B,R,P,Y,K,B,R,P,G,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,P,Y,K,B,R,P,G,K,B,R,P,G,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,B,Y,K,B,R,P,Y,K,B,R,P,G,R,P,Y,K,B,R,P,G,K,R,B,R,K,G,R,P,Y,K,B,R,P,G,K,R,P,Y,K,B,R,P,G,K}
(di mana "
B"= Biru, dan" "= Hitam).
K
Akhirnya, jika Anda ingin mengambil sampel yang berbeda, cukup pilih nilai benih yang berbeda, .s
Kode python untuk alokasi ini adalah sebagai berikut:xk
n=400
phi = (1+pow(5,0.5))/2
x = np.zeros(n)
s = np.random.uniform(0,1)
for i in range(n):
x = (s + phi*(i+1)) %1
print (s)
print (x)