Tengo problemas para generar números aleatorios que no siguen una distribución uniforme discreta.Números aleatorios basados en una probabilidad
Entonces, por ejemplo, supongo que tengo 5 números (para simplificar), la probabilidad de que se genere el número k sería k/15. (K = 1 a 5)
Mi idea es generar un número aleatorio j usando rand(), y si este número j es:
1 => entonces se genera número 1
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
Ahora escala esto para generar 1-10, 1-100, 1-1000. ¿Funciona esto de la forma en que lo intento? He construido un ciclo que hace esto cada vez que se necesita generar un número, creo que probablemente sea ineficiente, ya que aumenta hasta que encuentra el número j generado en uno de los rangos ... ¿Cuál podría ser una mejor manera? ¿para hacer esto?
EDITAR: o tal vez crear una matriz una vez con los números adecuados y luego sacar con rand() una mejor solución?
hay muchas preguntas similares en SO ..... –
http://www.cplusplus.com/reference/random/discrete_distribution/discrete_distribution/ –
relacionadas http://stackoverflow.com/questions/9432226/how- do-i-select-a-range-of-values-in-a-switch-statement –