Desidero utilizzare la risposta fornita nel numero this per scegliere in modo casuale elementi unici da un elenco.Come effettuare una scelta in base a una probabilità percentuale
Seguendo il metodo descritto, in ogni iterazione del mio ciclo, viene generato un valore di probabilità che rappresenta la possibilità percentuale dell'elemento corrente selezionato dall'elenco.
Quello che devo sapere è come utilizzare questo valore percentuale per selezionare l'elemento (o meno).
Ecco il codice che ho, con remainingIndices
essere un List<int>
for (var i = 0; i < remainingIndices.Count; i++)
{
var probability = pixelsToAdd/(float)(remainingIndices.Count - i);
}
pixelsToAdd
è 120 e remainingIndices.Count
è 3600. I valori di probabilità che sto ottenendo inizio a 0,0333333351
La soluzione deve essere flessibile lavorare con una gamma di valori molto più ampia, preferibilmente con qualsiasi valore.
Grazie
commento
Per i futuri lettori di questo argomento vorrei chiarire che in un primo momento ho pensato che il valore di probabilità era una certa percentuale tra 0 e 100, ma in realtà si tratta di un valore compreso tra 0 e 1 e quindi corrisponde perfettamente con il valore di ritorno di Random.NextDouble()
che quindi può essere utilizzato per il confronto come descritto nelle risposte di seguito.
Come è tipico ho scoperto Random.NextDouble() subito dopo la presentazione della domanda e improvvisamente cliccato nella mia testa. Grazie per il solido esempio, sono sicuro che mi sarei perso qualcosa senza di esso. – Steve