วัตถุสุ่มในกรอบงาน. NET รับจำนวนเต็ม 32 บิตเป็นข้อมูลเริ่มต้น ซึ่งหมายความว่าอัลกอริธึมการสับเปลี่ยนใด ๆ ที่ใช้วัตถุ Random นั้นถูกจำกัดไว้ที่ (สูงสุด) 4 พันล้านครั้งในการสับเปลี่ยนที่เป็นไปได้ (สมมติว่าการสับเปลี่ยนถูกกำหนดไว้ตามลำดับการสุ่ม ซึ่งฉันไม่สามารถจินตนาการได้ว่าทำไมมันถึงไม่เป็นเช่นนั้น) ซึ่งหมายความว่าเมื่อคอลเลกชันมีองค์ประกอบเกิน 13 รายการ รับประกันว่าการสับเปลี่ยนจะไม่ครอบคลุมการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมด เมื่อขนาดคอลเลกชันเพิ่มขึ้นจากขนาดนี้ ชุดย่อยของการเรียงสับเปลี่ยนที่เป็นไปได้ที่ครอบคลุมโดยการสับเปลี่ยนก็ไม่มีนัยสำคัญมากขึ้นเรื่อยๆ
4 พันล้านเป็นตัวเลขที่มาก (โดยส่วนตัว) แต่ถ้าคุณสร้างการเรียงสับเปลี่ยน "สุ่ม" หลายครั้งของคอลเลกชัน โอกาสที่การซ้ำจะมีมากกว่าที่ควรจะเป็นมาก (โดยเฉพาะอย่างยิ่งเมื่อคุณพิจารณาหลักการวันเกิดที่ขัดแย้งกัน / หลุมนกพิราบ)
มีวิธีง่ายๆ ใดบ้างที่ไม่เกี่ยวข้องกับฉันใช้เครื่องสร้างตัวเลขสุ่มของตัวเอง?