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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 RFOG
11/10/2006 - 09:28 | Informe spam
Otra forma es tener una tabla con las cantidades a repartir/ciclo e ir
sacando (y descontando) una cada vez que se saque un valor. Cuando la tabla
esté vacía, has sacado *exactamente* todos los números que querías en un
número dado de veces.

Hay métodos más complejos todavía para ajustarte a curvas de dispersión
deseadas.

Visita mi blog: http://rfog.blogsome.com
Libros, ciencia ficción y programación
Es evidente que existe la verdad. Porque el que niega que existe la verdad,
conoce que la verdad existe. Si, pues, no existe la verdad, es verdad que la
verdad no existe.

"Alberto Poblacion [MVP]"
wrote in message news:
"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.




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida