Comprendo il principio di base di un filtro antiparticolato e ho cercato di implementarlo. Tuttavia, mi sono bloccato sulla parte di ricampionamento.
Teoricamente parlando, è abbastanza semplice: dal vecchio (e ponderato) insieme di particelle, disegna un nuovo insieme di particelle con la sostituzione. Nel fare ciò, favorisci quelle particelle che hanno pesi elevati. Le particelle con pesi elevati vengono disegnate più spesso e le particelle con pesi bassi meno spesso. Forse solo una volta o per niente. Dopo il ricampionamento, a tutti i pesi viene assegnato lo stesso peso.
La mia prima idea su come implementare questo era essenzialmente questa:
- Normalizza i pesi
- Moltiplicare ciascun peso per il numero totale di particelle
- Arrotonda quei pesi in scala all'intero più vicino (ad es. Con
int()
in Python)
Ora dovrei sapere con quale frequenza disegnare ogni particella, ma a causa degli errori di arrotondamento, finisco per avere meno particelle rispetto a prima del passaggio di ricampionamento.
La domanda: come faccio a "riempire" le particelle mancanti per arrivare allo stesso numero di particelle di prima della fase di ricampionamento? Oppure, nel caso in cui io sia completamente fuori strada qui, come posso ricampionare correttamente?