งาน
กำหนดให้เป็นจำนวนเต็มบวกnน้อยกว่าที่2^30ระบุไว้เป็นอินพุตในวิธีที่คุณเลือกรหัสของคุณควรส่งออกจำนวนเต็มแบบสุ่มระหว่าง0และnรวม หมายเลขที่คุณสร้างควรจะเลือกอย่างสม่ำเสมอโดยการสุ่ม นั่นคือแต่ละค่าจาก0ถึงnต้องเกิดขึ้นกับความน่าจะเป็นที่เท่ากัน (ดูกฎและคำเตือน)
กฎและคำเตือน
รหัสของคุณสามารถสันนิษฐานได้ว่าตัวสร้างตัวเลขสุ่มใด ๆ ที่สร้างขึ้นในภาษาหรือไลบรารีมาตรฐานของคุณที่อ้างว่าสุ่มอย่างสม่ำเสมอนั้นเป็นชุดเครื่องแบบ นั่นคือคุณไม่ต้องกังวลเกี่ยวกับคุณภาพของแหล่งข้อมูลแบบสุ่มที่คุณใช้ อย่างไรก็ตาม
- คุณจะต้องกำหนดว่าถ้าแหล่งข้อมูลที่สุ่มคุณกำลังใช้เป็นชุดแล้วรหัสของคุณอย่างถูกต้องออกผลลัพธ์เป็นจำนวนเต็มสุ่มเครื่องแบบจากไป
0n - อาร์กิวเมนต์ใด ๆ เมื่อเรียกใช้ฟังก์ชันสุ่มในตัวหรือไลบรารีต้องเป็นค่าคงที่ นั่นคือพวกเขาจะต้องเป็นอิสระอย่างสมบูรณ์จากค่าอินพุต
- รหัสของคุณอาจสิ้นสุดลงด้วยความน่าจะเป็น 1แทนที่จะรับประกันได้ว่าจะยุติ
หมายเหตุ
randInt(0,n)ไม่ถูกต้องเนื่องจากรับอินพุตเป็นอาร์กิวเมนต์สำหรับฟังก์ชัน builtin หรือ libraryrand()%nจะไม่ให้หมายเลขสุ่มที่เหมือนกันโดยทั่วไป เป็นตัวอย่างที่กำหนดโดย betseg ถ้าintmax == 15และn = 10แล้วคุณจะมีโอกาสมากขึ้นที่จะได้รับมากกว่า0-56-10floor(randomfloat()*(n+1))จะไม่ให้ตัวเลขสุ่มแบบทั่วไปโดยทั่วไปเนื่องจากจำนวน จำกัด ของค่าจุดลอยตัวที่เป็นไปได้ที่แตกต่างกันระหว่าง 0 ถึง 1
rng()ให้0-100ถ้าn = 75และฟังก์ชั่นคือrng()%75แล้ว 0-25 จะเป็นเรื่องธรรมดามากขึ้น ... )