Skip to main content

¿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.

Cómo instalar Python 3.2 en Debian 7 Wheezy

Instalar Python 3.2 en Debian 7 Wheezy es fácil. Python 3.2 está en los repositorios. Por lo que no tenemos que instalarlo desde código fuente.

Con Debian 7 Wheezy nos viene instalado por defecto Python 2.7.  Pero si queremos tener un versión de Python 3 para aprovecharnos de las ventajas que esta revisión del lenguaje nos ofrece, podemos desde los repositorios instalar Python 3.2.

Para instalarlo tan solo necesitamos como es habitual abrir una terminal como root y ejecutar:

apt-get install python3

Tras unos segundos quedará instalado Python 3.2.

Python 3.2 y Python 2.7 conviven en el mismo sistema. Para abrir un interprete de Python 3 usaremos el siguiente comando:

python3

Y veremos algo como:


Python 3.2.3 (default, Feb 20 2013, 17:02:41)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Si queremos usar Python 2 usaremos el comando habitual para lanzar el interprete:

python

Y veremos algo como:


Python 2.7.3 (default, Jan 2 2013, 16:53:07)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>