ฉันเข้าใจหลักการพื้นฐานของตัวกรองอนุภาคและพยายามนำไปใช้ อย่างไรก็ตามฉันได้วางสายในส่วนที่สุ่มใหม่
ในทางทฤษฎีการพูดมันค่อนข้างง่าย: จากชุดอนุภาค (และน้ำหนัก) แบบเก่าวาดชุดอนุภาคใหม่ที่มีการแทนที่ ในขณะที่ทำเช่นนั้นโปรดปรานอนุภาคเหล่านั้นที่มีน้ำหนักสูง อนุภาคที่มีน้ำหนักมากจะถูกดึงบ่อยขึ้นและอนุภาคที่มีน้ำหนักต่ำจะน้อยลง อาจจะแค่ครั้งเดียวหรือเปล่าเลย หลังจาก resampling น้ำหนักทั้งหมดจะถูกกำหนดน้ำหนักเดียวกัน
แนวคิดแรกของฉันเกี่ยวกับวิธีการใช้สิ่งนี้คือ:
- ทำให้น้ำหนักปกติ
- คูณแต่ละน้ำหนักด้วยจำนวนอนุภาคทั้งหมด
- ปัดเศษน้ำหนักที่ปรับแล้วไปเป็นจำนวนเต็มที่ใกล้เคียงที่สุด (เช่น
int()
ใน Python)
ตอนนี้ฉันควรรู้ความถี่ในการดึงแต่ละอนุภาคแต่เนื่องจากข้อผิดพลาดของการปัดเศษฉันจึงมีอนุภาคน้อยกว่าก่อนที่จะเริ่มขั้นตอนการสุ่มใหม่
คำถาม: ฉันจะ "เติม" อนุภาคที่หายไปได้อย่างไรเพื่อให้ได้อนุภาคจำนวนเท่าเดิมก่อนขั้นตอนการสุ่มตัวอย่างใหม่? หรือในกรณีที่ฉันไม่ได้ติดตามอย่างสมบูรณ์ที่นี่ฉันจะลองตัวอย่างใหม่อย่างถูกต้องได้อย่างไร