งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ส่งออก nตัวเลขสุ่มจากช่วงเวลา [0,1] ด้วยผลรวมคงที่sด้วยผลรวมคงที่
อินพุต
n, n≥1จำนวนของตัวเลขสุ่มที่จะสร้าง
s, s>=0, s<=nผลรวมของตัวเลขที่จะสร้าง
เอาท์พุต
แบบสุ่ม ntupleของตัวเลขจำนวนจุดลอยตัวที่มีองค์ประกอบทั้งหมดจากช่วงเวลา [0,1]และผลรวมขององค์ประกอบทั้งหมดเท่ากับs, ส่งออกในทางที่ไม่คลุมเครือสะดวกใด ๆ ถูกต้องทั้งหมดn-tuples ที่มีโอกาสเท่ากันภายในข้อ จำกัด ของตัวเลขทศนิยม
นี่เท่ากับการสุ่มตัวอย่างอย่างสม่ำเสมอจากจุดตัดของจุดภายในnลูกบาศก์หน่วยมิติและn-1มิติระนาบมิติที่ผ่าน(s/n, s/n, …, s/n)และตั้งฉากกับเวกเตอร์(1, 1, …, 1) (ดูพื้นที่สีแดงในรูปที่ 1 สำหรับตัวอย่างสามตัวอย่าง)
รูปที่ 1: ระนาบของเอาต์พุตที่ถูกต้องด้วย n = 3 และผลรวม 0.75, 1.75 และ 2.75
ตัวอย่าง
n=1, s=0.8 → [0.8]
n=3, s=3.0 → [1.0, 1.0, 1.0]
n=2, s=0.0 → [0.0, 0.0]
n=4, s=2.0 → [0.2509075946818119, 0.14887693388076845, 0.9449661625992032, 0.6552493088382167]
n=10, s=9.999999999999 → [0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999,0.9999999999999]
กฎระเบียบ
- โปรแกรมของคุณควรเสร็จสิ้นภายในไม่กี่วินาทีบนเครื่องของคุณอย่างน้อยด้วย
n≤10ไม่กี่และ s ที่ถูกต้องใด ๆ - หากคุณต้องการโปรแกรมของคุณจะเป็นแบบเอกสิทธิ์เฉพาะบุคคลที่ด้านบนเช่น
s<nและหมายเลขผลลัพธ์จากช่วงครึ่งเวลาที่เปิด [0,1) (แบ่งตัวอย่างที่สอง) - หากภาษาของคุณไม่รองรับหมายเลขทศนิยมคุณสามารถปลอมผลลัพธ์ด้วยทศนิยมอย่างน้อยสิบหลักหลังจุดทศนิยม
- ช่องโหว่มาตรฐานไม่ได้รับอนุญาตและอนุญาตให้ใช้วิธีการอินพุต / เอาต์พุตมาตรฐาน
- นี่คือรหัสกอล์ฟดังนั้นรายการที่สั้นที่สุดวัดเป็นไบต์ชนะ
This is equal to uniformly sampling from the intersection- ฉันสามารถดูโปรแกรมที่เลือกแบบสุ่มจากมุมของทางแยกนั้น นั่นจะถูกต้องไหม?
s==0 or s==3ไม่มีที่จริงเฉพาะสำหรับ สำหรับค่าอื่น ๆ ของsระนาบนั้นมีพื้นที่ที่ไม่ใช่ศูนย์และคุณต้องเลือกจุดบนระนาบนั้นอย่างสม่ำเสมอ
s=2.99999999999, n=3นี้ เราจะสร้างเรียลแบบสุ่มเป็นทวีคูณพูดได้1e-9ไหม
