Loteria Clasica en Python [Parte 1]

Para culminar con esta serie de entregas sobre el azar en python, voy a redactar esta entrada y quizá otra, en esta entrada he ido al grano con la lotería de 6 números, verificamos que jugamos y cuantos metimos y ya luego en la próxima entrada podremos ver la posibilidad de ganar mas que estrés y canas con este tipo de juegos… a continuación el código y algunos comentarios y posibles mejoras 😀

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Autor Orfeo mas conocido como Seth-Root
 
import random
 
# Programa que emula el sorteo del Kino, no pretendo introducirlos en juegos de azar solo que no he visto nada sobre esto en internet y hace tiempo lo busque y es una de las cosas pendientes que tengo
 
loteria_jugada = [1, 2, 3, 4, 5, 6]
lista_de99 = []
sorteo = 0

lista6 = []

lista_completa = []
 


  
while sorteo < 5: # Iteramos 10 Veces
  
    num_metidos = 0
    lista99 = range (0 , 100)  # Creamos la lista del 1 a 15, recuerda que range no agrega el ultimo indice
    lista6 = []
    for i in range(1 , 7): # Iteramos 6 Veces
 

        lista_de99 = lista99  # Cambiamos el nombre de la lista por si algun error
    

        cuantos_hay = len( lista_de99 ) # contamos cuantos elementos hay, recuerda que la lista varia y pierde un elemenrto por ciclo y no queremos ese horrible error de fuera de rango

        x = random.randrange(cuantos_hay) # Buscams un numero Aleatorio
    
        lista6.append(x) # Pasamos el numero aleatorio y lo sacamos del Sorteo
    
    print "Has Jugado", loteria_jugada

    print lista6
    
    sorteo += 1

    
    
### Esto es lo nuevo, iteramos sobre uno de los 2 kinos el jugado o el ganador y asi verificamos cuantos aciertos tenemos
for h in lista6: # Iteramos sobre el ganador
  
    if h in loteria_jugada:
        num_metidos += 1
	      
    
### Aqui la asalida importante
        lista_completa.append(num_metidos)



    
    # estas lineas habian sido agregadas en la entrada anterior aunque realmente no hacian nada, solo si en 20 jugadas pegabas el gordo lo que estaba muy cuesta arriba de acuerdo a las ṕrobabilidades
    if loteria_jugada == lista6:
            print "En el sorteo:",  sorteo , ", Felicitaciones has ganado" ,      num_metidos
            print "Tu jugaste:",  loteria_jugada , "y el ganador es",  lista6 
            
meti_1 = lista_completa.count(1)
meti_2 = lista_completa.count(2)
meti_3 = lista_completa.count(3)
meti_4 = lista_completa.count(4)
meti_5 = lista_completa.count(5)
meti_6 = lista_completa.count(6)



print "Has metido",  meti_1 ,"veces 1 en" ,      sorteo
print "Has metido",  meti_2 , "veces 2 en" ,      sorteo
print "Has metido",  meti_3 , "veces 3 en" ,      sorteo
print "Has metido",  meti_4 , "veces 4 en" ,      sorteo
print "Has metido",  meti_5 , "veces 5 en" ,      sorteo
print "Has metido",  meti_6 , "veces 6 en" ,      sorteo

Y aqui la salida del programa

Has Jugado [1, 2, 3, 4, 5, 6]
[44, 28, 84, 43, 78, 57]
Has Jugado [1, 2, 3, 4, 5, 6]
[7, 32, 31, 73, 2, 55]
Has Jugado [1, 2, 3, 4, 5, 6]
[7, 7, 5, 24, 38, 74]
Has Jugado [1, 2, 3, 4, 5, 6]
[20, 59, 21, 65, 61, 76]
Has Jugado [1, 2, 3, 4, 5, 6]
[33, 14, 81, 45, 14, 46]
Has metido 0 veces 1 en 5
Has metido 0 veces 2 en 5
Has metido 0 veces 3 en 5
Has metido 0 veces 4 en 5
Has metido 0 veces 5 en 5
Has metido 0 veces 6 en 5

Ahora casi todo el código esta comentado pero haré un pequeño algoritmo no muy extenso, para dar las mejoras, si necesitas ahondar te recomiendo las entrada anteriores sobre el kino…

Primero importamos random, luego agregamos las variables, creamos un bucle while para buscar los numero ganadores(la maquina que saca los ganadores) y aquí mismo tenemos una lista para ir agregando los 6 números, a continuación creamos un bucle for para verificar cuantos hemos metido, recordemos que esto es una simulación de sorteos, verificamos si metemos los 6 casi imposible puedes agregar a el bucle while un numero mayor de repeticiones y te darás cuenta, luego lo que nos importa cuantas veces podemos ganar 1 a 6 números :S

Mejoras, podríamos crear una clase para el sorteo así podríamos desligar el tipo de sorteo a la programación y agregarlo como parametros, asi como también la cantidad de veces que se repite o hacerlo multi-funcional para varias loterías 😀 en la próxima entrada lo haré  a ver 😀

Podemos crear una clase para la rectificación y así tendríamos 2 clases 1 para el sorteo y otra para ver si ganamos 😀

Hasta aquí esta entrada, solo quería agregar esta lotería y hacer notar las similitudes de los diferentes sorteos en la programación ;D

Hasta la próxima comentar es Gratis

 

Kino en Python (parte 4)

Antes de ver el codigo que traemos hoy, les recuerdo este tipo de juego no da ganancias, lo he hecho solo por que no tenia nada mejor que hacer, queria demostrar que aunque juguemos este tipo de juegos durante toda la vida no ganaremos nada mas bien a la larga perderemos dinero, tiempo y tendremos mucho estres 😀

Luego de esta entrada quería agregar una o 2 entradas acerca de la Lotería Europea en python, esa donde se juegan 6 números y veremos cuantos números metemos :S, ojo matemáticamente en el kino debemos meter 15 de 25 números lo que implica que cada vez que sale un numero y nos acercamos a los 15 es mas difícil :S, en el otro juego es desde el 00 hasta el 99, luego de ver el programa tomaremos en cuenta las probabilidades de cada juego para dejar algunas cuestiones matemáticas claras, por ahora vamos al código y a lo que le hemos agregado:


#!/usr/bin/python
# -*- coding: utf-8 -*-
# Autor Orfeo mas conocido como Seth-Root
 
import random
 
# Programa que emula el sorteo del Kino, no pretendo introducirlos en juegos de azar solo que no he visto nada sobre esto en internet y hace tiempo lo busque y es una de las cosas pendientes que tengo
 
kino_jugado2 = [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24,25]
lista_de25 = []
sorteo = 1
lista_completa = []

 
 
#while kino_jugado2 !=  lista_de25: # Iteramos 10 Veces
while sorteo < 10000: # Iteramos 10 Veces
 
    num_metidos = 0
    lista25 = range (1 , 25)  # Creamos la lista del 1 a 15, recuerda que range no agrega el ultimo indice
 
    for i in range(1 , 10): # Iteramos 10 Veces
 
 
        lista_de25 = lista25  # Cambiamos el nombre de la lista por si algun error
 
        cuanots_hay = len( lista_de25 ) # contamos cuantos elementos hay, recuerda que la lista varia y pierde un elemenrto por ciclo y no queremos ese horrible error de fuera de rango
     
        x = random.randrange(cuanots_hay) # Buscams un numero Aleatorio
     
        sacar_numero = lista_de25.pop(x) # Pasamos el numero aleatorio y lo sacamos del Sorteo
       

### Esto es lo nuevo, iteramos sobre uno de los 2 kinos el jugado o el ganador y asi verificamos cuantos aciertos tenemos
    for h in lista_de25: # Iteramos sobre el ganador
       
  
        if h in kino_jugado2:
	      num_metidos += 1
	      
    
### Aqui la asalida importante
    lista_completa.append(num_metidos)


    sorteo += 1
    
    # estas lineas habian sido agregadas en la entrada anterior aunque realmente no hacian nada, solo si en 20 jugadas pegabas el gordo lo que estaba muy cuesta arriba de acuerdo a las ṕrobabilidades
    if kino_jugado2 == lista_de25:
            print "En el sorteo:",  sorteo , ", Felicitaciones has ganado" ,      num_metidos
            print "Tu jugaste:",  kino_jugado2 , "y el ganador es",  lista_de25 
    
meti_11 = lista_completa.count(11)
meti_12 = lista_completa.count(12)
meti_13 = lista_completa.count(13)
meti_14 = lista_completa.count(14)
    
print "Has metido",  meti_11 ,"veces 11 en" ,      sorteo
print "Has metido",  meti_12 , "veces 12 en" ,      sorteo
print "Has metido",  meti_13 , "veces 13 en" ,      sorteo
print "Has metido",  meti_14 , "veces 14 en" ,      sorteo

Bueno lo primero que vemos es el if, si ganamos con 15 aciertos a quien le importan 14 :D, al final podemos ver el append de una lista que creamos para saber cuantos metimos por sorteo aunque nos interesa solo si ganamos mas de 11 aciertos, y al final extraemos las veces que acertamos desde 11 a 14 aciertos, el sistema simplemente nos devuelve cuantas veces metimos 11, 12, 13 o 14 aciertos en 10.000(10 mil) sorteos….. esto nos ayudara a entender probabilisticamente cuantas veces vamos a ganar a continuación 3 salidas del programa

Salida 1

Has metido 585 veces 11 en 10000
Has metido 94 veces 12 en 10000
Has metido 1 veces 13 en 10000
Has metido 0 veces 14 en 10000


Salida 2

Has metido 586 veces 11 en 10000
Has metido 80 veces 12 en 10000
Has metido 7 veces 13 en 10000
Has metido 0 veces 14 en 10000

Salida 3

Has metido 611 veces 11 en 10000
Has metido 66 veces 12 en 10000
Has metido 2 veces 13 en 10000
Has metido 0 veces 14 en 10000

Algo nos dice a simple vista 😀

Hasta la proxima, comentar es gratis 😀

Kino en Python (parte 3)

En esta entrada pensaba escribir sobre lo que les comente en la entrada anterior, pero a medida que iba programando o diseñando el programa para hacerlo fácil de entender y potente me di cuenta que al escribirlo directamente si yo lo volviera a ver en 3 años no recordaría mucho y esto me hizo pensar que muchas personas no iban a entender el proceso de realizar un buen programa sin hacer las pruebas que esto lleva implícitas, es por esta razón que hoy  he decidido alargar mas estas entradas sobre loterías en python así la voy a llamar por que azar esta muy trillado 😀

En que consiste esta entrada, pues es la antesala a verificar cuantos números vamos a meter antes de ganarnos el grande, es decir antes de meter 15 números de 25 vamos a jugar muchos millones o cientos de miles de loterías kino, pero vamos a meter como mínimo 5 siempre pero el kino paga a partir de 11 «Rayos :S» y es por eso que cree el siguiente código que solo revisa 20 sorteos y nos deja verificar a ojo por ciento, es decir como lo haría un humano si ganamos y cuantos metimos, el programa imprime el sorteo, el numero de aciertos y nos permite comparar los 2 kinos el ganador y el que jugamos…. a continuaciones el código


#!/usr/bin/python
# -*- coding: utf-8 -*-
# Autor Orfeo mas conocido como Seth-Root
 
import random
 
# Programa que emula el sorteo del Kino, no pretendo introducirlos en juegos de azar solo que no he visto nada sobre esto en internet y hace tiempo lo busque y es una de las cosas pendientes que tengo
 
kino_jugado = [1, 3, 4, 5, 6, 10, 11, 13, 15, 17, 18, 19, 20, 21, 23]
kino_jugado2 = [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24,25]
lista_de25 = []
sorteo = 1
 
 
#while kino_jugado2 !=  lista_de25: # Iteramos 10 Veces
while sorteo < 21: # Iteramos 10 Veces
 
    num_metidos = 0
    lista25 = range (1 , 25)  # Creamos la lista del 1 a 15, recuerda que range no agrega el ultimo indice
 
    for i in range(1 , 10): # Iteramos 10 Veces
 
 
        lista_de25 = lista25  # Cambiamos el nombre de la lista por si algun error
 
        cuanots_hay = len( lista_de25 ) # contamos cuantos elementos hay, recuerda que la lista varia y pierde un elemenrto por ciclo y no queremos ese horrible error de fuera de rango
     
        x = random.randrange(cuanots_hay) # Buscams un numero Aleatorio
     
        sacar_numero = lista_de25.pop(x) # Pasamos el numero aleatorio y lo sacamos del Sorteo
       

### Esto es lo nuevo, iteramos sobre uno de los 2 kinos el jugado o el ganador y asi verificamos cuantos aciertos tenemos
    for h in lista_de25: # Iteramos sobre el ganador
       
  
        if h in kino_jugado2:
	      num_metidos += 1
	      
    
### Aqui la asalida importante
    print "en el sorteo",  sorteo , "Has metido" ,      num_metidos

### Ahora verificamos cuantos metimos contandolos a el ojo, por eso escribo codigos imagina hacer esto 1 millon de veces :S
    print "Tu jugaste:",  kino_jugado2 , "y el ganador es",  lista_de25 
    sorteo += 1
    
    if kino_jugado2 == lista_de25:
            print "En el sorteo:",  sorteo , ", Has metido" ,      num_metidos
            print "Tu jugaste:",  kino_jugado2 , "y el ganador es",  lista_de25 

 
# Utilizamos pop pero podiamos usar del, te invito a hacerlo😀, utilice pop para luego crear otra lista con los numeros
# que vayamos sacando y sacar los 15 como en efecto lo hacen naturalmente

Hasta aquí podemos verificar fácilmente el código agregado, pero recuerda que la meta es que el programa nos diga cuantas aciertos vamos a tener hasta pegarle al gordo por sorteo, de aquí en adelante podemos escribir un buen código pero si quieres esperar la próxima entrada espero tenerla pronto 😀

La salida del programa es mas o menos asi:

en el sorteo 1 Has metido 9
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 2, 3, 4, 5, 7, 9, 12, 15, 16, 18, 19, 20, 21, 23]
en el sorteo 2 Has metido 10
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 3, 6, 8, 9, 10, 12, 14, 15, 16, 17, 20, 21, 23, 24]
en el sorteo 3 Has metido 9
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 3, 5, 6, 8, 9, 10, 13, 14, 15, 17, 20, 21, 22, 23]
en el sorteo 4 Has metido 10
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 3, 6, 7, 8, 9, 10, 11, 12, 13, 16, 18, 19, 20, 24]
en el sorteo 5 Has metido 9
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 2, 3, 4, 5, 7, 8, 9, 12, 16, 17, 18, 20, 21, 23]
en el sorteo 6 Has metido 10
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [2, 4, 6, 7, 8, 9, 10, 12, 16, 17, 19, 20, 22, 23, 24]
en el sorteo 7 Has metido 7
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [2, 3, 4, 5, 8, 10, 11, 12, 14, 15, 16, 18, 20, 21, 22]
en el sorteo 8 Has metido 9
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 3, 4, 5, 6, 7, 8, 9, 13, 14, 15, 19, 21, 22, 23]
en el sorteo 9 Has metido 8
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 3, 7, 8, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24]
en el sorteo 10 Has metido 10
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 4, 5, 6, 7, 8, 13, 14, 15, 16, 17, 18, 19, 20, 24]
en el sorteo 11 Has metido 7
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 2, 5, 8, 9, 11, 14, 15, 16, 18, 20, 21, 22, 23, 24]
en el sorteo 12 Has metido 6
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 5, 6, 7, 8, 9, 10, 11, 16, 18, 20, 21, 22, 23, 24]
en el sorteo 13 Has metido 8
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 3, 5, 8, 9, 10, 11, 17, 18, 19, 20, 21, 22, 23, 24]
en el sorteo 14 Has metido 6
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 3, 4, 5, 6, 7, 10, 11, 14, 16, 18, 19, 21, 22, 24]
en el sorteo 15 Has metido 10
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 2, 3, 7, 8, 9, 10, 12, 13, 15, 16, 19, 20, 21, 23]
en el sorteo 16 Has metido 8
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 3, 4, 7, 10, 11, 13, 14, 15, 17, 19, 20, 21, 22, 23]
en el sorteo 17 Has metido 6
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 4, 5, 7, 9, 10, 11, 13, 14, 16, 17, 18, 21, 22, 24]
en el sorteo 18 Has metido 8
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [3, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 22, 23, 24]
en el sorteo 19 Has metido 10
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [2, 3, 6, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 21, 23]
en el sorteo 20 Has metido 7
Tu jugaste: [1, 2, 3, 4, 6, 8, 9, 12, 13, 15, 17, 19, 20, 24, 25] y el ganador es [1, 4, 5, 6, 7, 10, 12, 14, 16, 17, 18, 20, 22, 23, 24]


Hasta pronto