ดังที่คุณกล่าวว่าเป็นไปไม่ได้ที่จะตรวจสอบให้แน่ใจว่าการเปลี่ยนรูปทุกครั้งมีแนวโน้มเท่า ๆ กันและทำให้แน่ใจว่าสีมีการกระจายอย่างสม่ำเสมอเพราะหนึ่งในการเรียงสับเปลี่ยนมีสีแดงทั้งหมดติดกัน
วิธีการที่สวยงามมาก แต่ไม่ชัดเจนอย่างเห็นได้ชัดเพื่อให้แน่ใจว่าสีที่ได้รับการกระจายอย่างสม่ำเสมอคือการใช้ลำดับความคลาดเคลื่อนต่ำ
สมมติว่าคุณมี N=400 ลูกบอลหมายเลขจาก 1 ถึง Nและคุณค่าของเมล็ด s.
ตรวจสอบให้แน่ใจว่าลูกบอลทั้งหมดที่มีสีเดียวกันถูกกำหนดหมายเลขอย่างต่อเนื่อง นั่นคือในกรณีของคุณปล่อยให้ 100 ลูกแรกเป็นสีแดง 40 ลูกต่อไปเป็นสีเหลืองสีเขียว 50 ลูกต่อไปเป็นต้น
จากนั้นจัดสรร kth บอลค่า xk ดังนั้น:
xk=(s+kϕ)(mod1),
ที่ไหน
- ϕ=1+5√2=1.61803399...อัตราส่วนทองคำ
- (mod1) ผู้ประกอบการที่ใช้เวลาส่วนของการโต้แย้ง
- s คือ 'ค่า' ที่คงที่ที่คุณต้องการ
นั่นคือแต่ละคน N ลูกจะได้รับการจัดสรรมูลค่า xk ซึ่งจะอยู่ระหว่าง 0 ถึง 1 เสมอ
ตอนนี้เพียงแค่สั่งลูกบอลในลำดับจากน้อยไปมาก xk ราคา.
ตัวอย่างเช่นการใช้ค่าเมล็ดของ 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}
(where "
B"= Blue, and "
K" = Black).
Finally, if you wish to take a different sample, simply select a different seed value, s.
Python code for this allocating the xk is as follows:
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)