Random con Condiciones

11/10/2006 - 08:38 por Ricardo M. | Informe spam
Hola

Me pudieran suministrar informacion o codigo en .net (preferible c sharp)
de cómo obtener numeros aleatorios en base a unas condiciones de
probabilidad.

Ejemplo.: que del 0 al 1000 me genere nuemros aleatorios sin detenerse pero
con la condicion de que en un 70% de probabilidad siempre muestre el Nº 85,
un 55% de prob que siempre muestre el Nº 21, etc., etc.,

Sé que con la clase System.Random se puede, pero no sé cómo indicar las
condiciones en cuanto a las probabilidades que quiero que siempre aparezca
determinado valor.

Agradezco toda colaboración.
 

Leer las respuestas

#1 Alberto Poblacion [MVP]
11/10/2006 - 08:58 | Informe spam
"Ricardo M." wrote in message
news:
Me pudieran suministrar informacion o codigo en .net (preferible c sharp)
de cómo obtener numeros aleatorios en base a unas condiciones de
probabilidad.

Ejemplo.: que del 0 al 1000 me genere nuemros aleatorios sin detenerse
pero
con la condicion de que en un 70% de probabilidad siempre muestre el Nº
85,
un 55% de prob que siempre muestre el Nº 21, etc., etc.,

Sé que con la clase System.Random se puede, pero no sé cómo indicar las
condiciones en cuanto a las probabilidades que quiero que siempre
aparezca
determinado valor.



¿Seguro que con System.Random se puede? He estado mirando la
documentación de System.Random en MSDN y no consta que ofrezca ese tipo de
posibilidad.

La forma en que tradicionalmente se realiza esa asignación no-uniforme
de probabilidades con un generador de números aleatorios "uniforme" es
generando un rango de valores mayor y luego "comprimiéndolo" según las
probabilidades deseadas. Por ejemplo, si quieres un 70% para el 85, un 25%
para el 21, y el resto (5%) para los demás números de 1 al 1000 (0,00501% a
cada uno), entonces lo que haces es generar números entre 1 y 100000 (por
ejemplo), y si te sale un resultado entre 1 y 70000, contestas "85", si te
sale entre 70001 y 95000 contestas "21", Y el resto, cada 5 números se lo
asignas a uno de los valores entre 1 y 1000. Vale, con eso el cálculo no
sale exacto, porque entre esos 1000 números también están el 85 y el 21,
pero si en lugar de generar enteros haces un proceso similar con valores de
coma flotante, puedes sacar con exactitud las probabilidades que desees para
cada número.

Preguntas similares