Ho una lista di suoni che devono essere riprodotti quando l'utente preme un pulsante.
Per ora ho appena generato un numero casuale all'interno del range della lista e seleziono il suono con quell'indice. (Evito anche che il suono venga riprodotto la prossima volta che si fa clic sul pulsante. Poiché è facile, vorrei concentrare solo nell'algoritmo di selezione e lasciare l'esclusione dietro.
Dal momento che è possibile riprodurre ripetutamente alcuni suoni in un pattern, mi piacerebbe regolare il mio algoritmo:
Una volta che un file è stato riprodotto, viene spostato alla fine dell'elenco. I suoni dall'inizio hanno una maggiore possibilità di essere riprodotti rispetto a quelli alla fine, quindi riducono al minimo la ripetizione.
Invece di assegnando un peso a ciascun indice , voglio avere un fattore che determini la probabilità di diminuzione. Ad esempio, impostare questo fattore su 1.2, il che significa che ogni indice è 1.2 volte più probabile che possa essere riprodotto come il seguente. Questo si spera produca un bel decadimento di probabilità.
La soluzione più veloce sembra essere una funzione matematica che associa il numero casuale all'intervallo di indici. In questo modo non devo impostare gli intervalli, ma posso calcolare direttamente il risultato in base al numero casuale.
Non riesco proprio a capire la matematica e l'implementazione di questa idea, quindi ho bisogno che tu la stenda per me. L'algoritmo verrà utilizzato in un'app Android, quindi il linguaggio di programmazione che sto utilizzando è Java.