Python - Generar números con distintas probabilidades

 
Vista:
sin imagen de perfil

Generar números con distintas probabilidades

Publicado por jorge (3 intervenciones) el 17/04/2016 17:01:45
Hola a todos.

Antes de nada un saludo a todos.

Necesito crear en phyton un generardor de numeros entre el 0 y el 9 pero necesito que dos de esos números (que yo pueda elegir) tengan una probabilidad distinta al 50%.

por ejemplo números 0,1,2,3,4,5,6,7 que tengan el 50% y que el el número 8 tenga un 40% de probabilidades y el número 9 un 60% de probabilidades.


¿Seria muy dificil conseguirlo?

Gracias ante todo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Generar números con distintas probabilidades

Publicado por xve (1646 intervenciones) el 17/04/2016 19:28:59
Hola Jorge, no entiendo a que te refieres con el % de los números...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Generar números con distintas probabilidades

Publicado por jorge (3 intervenciones) el 18/04/2016 12:09:52
Gracias por tu respuesta

Imagina un dado con 6 caras (dado normal) imagino que yo cargo una de las caras, el resto de caras que no estan cargadas quiero que salgan aleatoriamente un 50% todas ellas, ahora la cara cargada quiero que salga un 60% de las veces y la cara opuesta un 40% de las tiradas.


Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fco. Javier

Generar números con distintas probabilidades

Publicado por Fco. Javier (2 intervenciones) el 17/04/2016 19:43:52
Puedes hacer lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import random
 
elementos = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
pesos = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.4, 0.6] # Asignas pesos a cada elemento en el mismo orden
 
resultado = [] # Lista que almacena el resultado
 
'''
Con zip se consigue que en la variable 'e' y 'p' respectivamente se asignen el valor y el peso en orden de la lista.
1ª iter: e='0' ; p=0.5
2ª iter: e='1' ; p=0.5
...
10ª iter: e='9' ; p=0.6
'''
for e, p in zip(elementos, pesos):
 
    # se almacenan repetidos los elementos el número de veces según el peso elegido
    # por ejemplo el 1 estará 50 veces en la lista y el 8, 40 veces repetido
    resultado += [e] * int(p * 100)
 
# Con ramdon choice se elige de forma pseudo aleatoria de una secuencia.
print random.choice(resultado)

Aunque funcionaría, pienso que es ineficiente y que debe haber una forma estadística mejor de implementar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Generar números con distintas probabilidades

Publicado por jorge (3 intervenciones) el 18/04/2016 12:10:40
Muchas gracias por tu espuesta.

Imagina un dado con 6 caras, eso creo que lo simplificaría todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar