Я розумію основний принцип фільтра для частинок і намагався його реалізувати. Однак я повісився на частину перестановки.
Теоретично кажучи, це досить просто: зі старого (і зваженого) набору частинок намалюйте новий набір частинок із заміною. Роблячи це, віддайте перевагу тим частинкам, які мають велику вагу. Частинки з великою вагою частіше малюються, а частинки з низькою вагою - рідше. Можливо, лише один раз чи зовсім не. Після перекомпонування всі ваги отримують однакову вагу.
Моя перша ідея, як це здійснити, по суті була така:
- Нормалізуйте ваги
- Помножте кожну вагу на загальну кількість частинок
- Округніть ці масштабовані ваги до найближчого цілого числа (наприклад,
int()
в Python)
Тепер я повинен знати, як часто малювати кожну частинку, але через помилки округлення у мене є менше частинок, ніж до етапу перекомпонування.
Питання: Як я "заповнити" відсутні частинки, щоб дістатись до тієї ж кількості частинок, що і до етапу перекомпонування? Або, якщо я тут повністю відсутній, як зробити повторну вибірку правильно?