ถ้าฉันเข้าใจคุณอย่างถูกต้องจะมีเพียงคะแนนในพื้นที่เล็ก ๆ ในมิติ n ที่ตรงกับข้อ จำกัด ของคุณ
ข้อ จำกัด แรกของคุณ จำกัด มันไว้ที่ด้านในของ hypersphere ซึ่งทำให้ฉันนึกถึง comp.graphics.algorithms คำถามที่พบบ่อย"เครื่องแบบจุดสุ่มบนทรงกลม"และวิธีการสร้างจุดกระจายแบบสม่ำเสมอในลูกบอลหน่วย 3มิติ?
ข้อ จำกัด ที่สองแบ่งบิตออกจาก hypersphere และข้อ จำกัด อื่น ๆ เพิ่มเติมลดลงในระดับที่ตรงกับข้อ จำกัด ของคุณ
ฉันคิดว่าสิ่งที่ง่ายที่สุดที่จะทำคือหนึ่งในวิธีการที่แนะนำโดย FAQ:
- เลือกกล่องกำหนดขอบเขตแนวแกนโดยพลการบางส่วนที่เราแน่ใจว่ามีปริมาณทั้งหมด ในกรณีนี้ -c <a_1 <c, -c <a_2 <c, ... -c <a_n <c มีปริมาตรที่ถูก จำกัด ทั้งหมดเนื่องจากมีไฮเปอร์สเปร์ที่อธิบายโดยข้อ จำกัด แรกและข้อ จำกัด อื่น ๆ ยังคงอยู่ ออกไปที่ระดับเสียงนั้น
- อัลกอริธึมจะเลือกคะแนนอย่างสม่ำเสมอตลอดกล่องที่มีขอบเขต ในกรณีนี้อัลกอริทึมจะกำหนดแต่ละพิกัดของเวกเตอร์ของผู้สมัครให้อิสระจำนวนสุ่มกระจายอย่างสม่ำเสมอจาก -c ถึง + c (ฉันสมมติว่าคุณต้องการจุดกระจายที่มีความหนาแน่นเท่ากันตลอดทั้งเล่มนี้ฉันคิดว่าคุณสามารถเลือกอัลกอริธึมบางส่วนหรือทั้งหมดด้วยการแจกแจงแบบปัวซองหรือการกระจายแบบไม่สม่ำเสมออื่น ๆ ได้ถ้าคุณมีเหตุผลบางประการ)
- เมื่อคุณมีเวกเตอร์ผู้สมัครแล้วให้ตรวจสอบข้อ จำกัด แต่ละข้อ หากมันล้มเหลวให้กลับไปเลือกจุดอื่น
- เมื่อคุณมีเวกเตอร์ผู้สมัครแล้วให้เก็บไว้ที่อื่นเพื่อใช้ในภายหลัง
- หากคุณมีเวกเตอร์ที่เก็บไว้ไม่เพียงพอให้กลับไปลองสร้างอีกเวกเตอร์หนึ่ง
ด้วยตัวสร้างตัวเลขสุ่มคุณภาพสูงเพียงพอนี้จะช่วยให้คุณมีชุดของพิกัดที่จัดเก็บที่ตรงกับเกณฑ์ของคุณด้วยความหนาแน่นสม่ำเสมอ (คาดว่า)
อนิจจาถ้าคุณมีมิติที่ค่อนข้างสูง n (เช่นถ้าคุณสร้างเวกเตอร์แต่ละตัวจากรายการพิกัดที่ค่อนข้างยาว) ทรงกลมที่ถูกจารึกไว้ (น้อยกว่าเสียงวิทช์ดาวน์ที่ลง) มีส่วนเล็ก ๆ ของปริมาตรรวมของ กล่องรวมทั้งหมดดังนั้นจึงอาจจำเป็นต้องดำเนินการซ้ำหลายครั้งส่วนใหญ่จะสร้างจุดที่ถูกปฏิเสธนอกเขตพื้นที่ที่มีข้อ จำกัด ของคุณก่อนที่จะหาจุดในพื้นที่ที่มีข้อ จำกัด ของคุณ คอมพิวเตอร์ทุกวันนี้ค่อนข้างเร็วแล้วมันจะเร็วพอไหม