Ho problemi a generare numeri casuali che non seguono una distribuzione uniforme discreta.Numeri casuali basati su una probabilità
Ad esempio, supponiamo di avere 5 numeri (per mantenerlo semplice), una probabilità che il numero k generato sia k/15. (K = 1 a 5)
mia idea è di generare un numero casuale j utilizzando rand(), e se questo numero j è:
1 => quindi il numero 1 viene generato
2 o 3 => num 2
4 o 5 o 6 => num 3
7 o 8 o 9 o 10 => NUM 4
11 o 12 o 13 o 14 o 15 => num 5
Ridimensiona ora a generare 1-10, 1-100, 1-1000. Funziona nel modo in cui lo intendo? Ho costruito un ciclo che fa praticamente ogni volta che un numero deve essere generato, penso che sia probabilmente inefficiente dal momento che sale fino a trovare il numero j generato in uno degli intervalli ... Quale potrebbe essere un modo migliore per fare questo?
EDIT: o forse creare un array una volta con i numeri corretti e quindi estrarre con rand() soluzione migliore?
ci sono molte domande simili su SO ..... –
http://www.cplusplus.com/reference/random/discrete_distribution/discrete_distribution/ –
correlati http://stackoverflow.com/questions/9432226/how- do-i-select-a-range-of-values-in-a-switch-statement –