สุ่มตัวเลขโดยไม่ซ้ำ

การกำหนดปัญหา

สมมติว่าเราจำเป็นต้องสร้างชุดของตัวเลขสุ่มจำนวนเต็มโดยไม่ซ้ำกันในช่วงของค่าที่กำหนด ตัวอย่างขณะเดินทาง:

  • การสร้างรหัสสุ่มที่ไม่ซ้ำกันสำหรับผลิตภัณฑ์หรือผู้ใช้
  • การมอบหมายงานให้กับบุคคล (สุ่มทีละคนจากรายการ)
  • การเรียงสับเปลี่ยนของคำในคำค้นหา (สวัสดี seo-shnikam)
  • เล่นล็อตโต้ ฯลฯ

วิธีที่ 1 ง่าย

ในการเริ่มต้น ลองพิจารณาตัวเลือกง่ายๆ: เราจำเป็นต้องสุ่มชุดจำนวนเต็ม 10 ตัวจาก 1 ถึง 10 โดยใช้ฟังก์ชันที่มีอยู่ใน Excel ระหว่างคดี (ขอบระหว่าง) ไม่รับประกันความเป็นเอกลักษณ์ หากคุณป้อนลงในเซลล์แผ่นงานแล้วคัดลอกลง 10 เซลล์ การทำซ้ำอาจเกิดขึ้นได้ง่าย:

สุ่มตัวเลขโดยไม่ซ้ำ

ดังนั้นเราจะไปทางอื่น

Excel ทุกรุ่นมีฟังก์ชัน RANK (รัง)มีไว้สำหรับการจัดอันดับหรือกล่าวอีกนัยหนึ่งคือการกำหนดตำแหน่งบนสุดของตัวเลขในชุด ตัวเลขที่ใหญ่ที่สุดในรายการมี rank=1 ตัวที่สองด้านบนมี rank=2 และอื่นๆ

มาป้อนฟังก์ชันในเซลล์ A2 . กัน สลิช (แรนด์) โดยไม่มีข้อโต้แย้งและคัดลอกสูตรลง 10 เซลล์ ฟังก์ชั่นนี้จะสร้างชุดตัวเลขสุ่ม 10 ตัวจาก 0 ถึง 1:

สุ่มตัวเลขโดยไม่ซ้ำ

ในคอลัมน์ถัดไป เราจะแนะนำฟังก์ชัน RANKเพื่อกำหนดตำแหน่งในการจัดอันดับสำหรับแต่ละหมายเลขสุ่มที่ได้รับ:

สุ่มตัวเลขโดยไม่ซ้ำ

เราได้รับในคอลัมน์ B ตามที่เราต้องการ – จำนวนเต็มสุ่มแบบไม่ซ้ำกันตามต้องการตั้งแต่ 1 ถึง 10

ตามทฤษฎีแล้ว สถานการณ์อาจเกิดขึ้นเมื่อ สลิช จะให้ตัวเลขสุ่มที่เหมือนกันสองตัวแก่เราในคอลัมน์ A อันดับของมันจะตรงกันและเราจะได้รับการทำซ้ำในคอลัมน์ B อย่างไรก็ตาม ความน่าจะเป็นของสถานการณ์ดังกล่าวมีน้อยมาก เนื่องจากความถูกต้องคือทศนิยม 15 ตำแหน่ง

วิธีที่ 2. ซับซ้อน

วิธีนี้ซับซ้อนกว่าเล็กน้อย แต่ใช้สูตรอาร์เรย์เดียวเท่านั้น สมมติว่าเราต้องสร้างรายการของจำนวนเต็มสุ่มที่ไม่ซ้ำกัน 9 รายการในช่วง 1 ถึง 50 บนแผ่นงาน

ป้อนสูตรต่อไปนี้ในเซลล์ A2 คลิกที่จุดสิ้นสุด Ctrl + Shift + Enter (เพื่อป้อนเป็นสูตรอาร์เรย์!) และคัดลอกสูตรลงไปตามจำนวนเซลล์ที่ต้องการ:

สุ่มตัวเลขโดยไม่ซ้ำ

วิธีที่ 3 มาโคร

และแน่นอน คุณสามารถแก้ปัญหาโดยใช้การเขียนโปรแกรมใน Visual Basic ในบทความเก่าเรื่องหนึ่งเกี่ยวกับการสุ่มตัวอย่าง ฉันได้อ้างถึงฟังก์ชันมาโครอาร์เรย์ของล็อตโต้แล้ว ซึ่งสร้างตัวเลขสุ่มที่ไม่ซ้ำตามจำนวนที่ต้องการจากช่วงเวลาที่กำหนด

  • วิธีนับจำนวนค่าที่ไม่ซ้ำในช่วง
  • สุ่มเลือกองค์ประกอบจากรายการ

เขียนความเห็น