Etiqueta: universo
¿Por qué hay algo en vez de nada?
Ayer pasando el rato en meneame alcance un texto publicado en jotdown titulado “¿Por qué hay algo en vez de nada?” y que empieza con el párrafo siguiente.
Imaginen el siguiente vídeo. Un hombre está sentado frente a una mesa. Encima de ella hay una caja con 100 dados. El hombre vuelca la caja y los 100 dados caen con la cara del seis boca arriba. ¿Cómo ha podido ocurrir eso?
Realmente difícil que suceda, ¿verdad?. La idea que trata de desenredar el autor del texto es que para que se diera la posibilidad del nacimiento de nuestro universo debió darse simultáneamente al azar multitud de condiciones optimas. O al menos es lo que entendí. Bueno, si no eso, ahí esta el artículo para quien quiera desmenuzarlo.
Por mi parte se me había ocurrido simular el tirar los dados y como todos ellos caen mostrando la cara con el seis, y comprobar lo difícil que es. Así que lo he visto como una oportunidad para hacer mi primer programita en python.
Al programa en python se le puede pasar como parámetro el número de dados que han de caer simultáneamente mostrando un seis. Desde 4 hasta 10. Diez dados es ya bastante complejo, pero si quieres probar con números superiores solo tienes que cambiar el código levemente.
Para hacerlo funcionar, copiar el código del script en un fichero vació con extensión “py”. Guardarlo y darle permisos de ejecución. Posteriormente ejecutarlo desde el terminal usando como parámetro el número de dados a lanzar.
Como WordPress formatea el texto a su aire, si te da algún problema también puedes descargarlo comprimido de aquí make_universe.py.tar.
#!/usr/bin/env python # copyright 2013 nireleku import random import sys GLOBAL_UNIVERSE_COMPLEX = 4; def TakeLuck(): "Throw dice for luck to make a new universe" global GLOBAL_UNIVERSE_COMPLEX; theround = GLOBAL_UNIVERSE_COMPLEX; luck = 0; dice = 0; while(theround != 0): dice = random.choice(range(6)) +1 ; if dice == 6: luck = luck + 1; theround = theround - 1; print dice, if luck == GLOBAL_UNIVERSE_COMPLEX: return True; return False; def TryToMakeUniverse(): "Try until the new universe is born" times = 0; infinite = 1; while infinite == 1 : times = times + 1; if TakeLuck() == True: print "We make a new universe in", times, "times!"; return; else : print "We try", times, "times and no new universe was created."; def main(): global GLOBAL_UNIVERSE_COMPLEX; try: GLOBAL_UNIVERSE_COMPLEX = int(sys.argv[1]); except (ValueError, IndexError): GLOBAL_UNIVERSE_COMPLEX = 4; if GLOBAL_UNIVERSE_COMPLEX < 4: print "This universe is too lazy."; sys.exit(1); if GLOBAL_UNIVERSE_COMPLEX > 10: print "This isn't God's computer."; sys.exit(1); print "The universe complexity is ", GLOBAL_UNIVERSE_COMPLEX; TryToMakeUniverse(); main()
Comentarios son bienvenidos.