งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ส่งออก n
ตัวเลขสุ่มจากช่วงเวลา [0,1] ด้วยผลรวมคงที่s
ด้วยผลรวมคงที่
อินพุต
n, n≥1
จำนวนของตัวเลขสุ่มที่จะสร้าง
s, s>=0, s<=n
ผลรวมของตัวเลขที่จะสร้าง
เอาท์พุต
แบบสุ่ม n
tupleของตัวเลขจำนวนจุดลอยตัวที่มีองค์ประกอบทั้งหมดจากช่วงเวลา [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
ไหม