Jugando con el módulo random.

Hola a tod@s, en el post anterior escribí sobre el módulo random y un poco sobre su uso básico.

Hace tiempo, me dispuse a escribir un pequeño programita que sacaba de forma aleatoria números de X cifras y cuyas cifras sumen X número, podría usarle, por ejemplo, para un pequeño motor de cifrado:


#!/usr/bin/python2

import random

def contar_str(string):
 result=0
 for a in string:
  result+=1
 return result


def sumar(numero):

 str_numero=str(numero)
 result=0
 for a in str_numero:
  result+=int(a)
 return result

def generador_aleatorio(numero_de_suma, numero_de_cifras):
 
 elementos=0
 nueves=""
 for a in range(0, numero_de_cifras):
  nueves+="9"
 while elementos<10:

  var=random.randint(0, int(nueves))
  if sumar(var) == numero_de_suma and contar_str(str(var)) == numero_de_cifras:
   elementos+=1
   yield var

lista=generador_aleatorio(78, 20)
for a in lista:
 print a
El código está en bruto, es decir, no está muy bien optimizado y le queda bastante para que devuelva algo óptimo, pero bueno, como un pequeño ejemplo para la función random no está mal.


3 comentarios:

Dan dijo...

Francisco cuanto tiempo sin poner
nada , por fin (no sabes todo lo que uno sufre sin ver cosas nuevas en tu maravilloso blog) me he bajado todos tus tutoriales y me gustaria que el blog vuelva a ser lo de antes centrarnos en algo y trabajar con ello (aunque esto de ahora de poner los modulos sin mas y un pequeño programita tambien esta bien)
no he dejado nunca de mirar tu blog sigue asi que este blog merece la pena.

Francisco Dominguez Lerma dijo...

Hola Dan.

Me alegra ha alegrado muchísimo el comentario que me has escrito, de verdad, comentarios así son los que hacen que me guste escribir.

Es cierto, hace mucho que estuve sin escribir, a veces por falta de tiempo, a veces por que yo tampoco estaba muy bien y otras, sinceramente, por dejadez.

Voy a volver a escribir en este blog, a lo mejor no diariamente, aunque lo intentaré, pero al menos varias veces a la semana, también le pondré otra plantilla, ya que esta última que puse no me está gustando nada.

En cuanto al contenido, pues si, estaría bien centrarnos en algo como la otra vez, estaría muy bien.

Un abrazo y gracias por ser tan fiel a este blog.

Dan dijo...

Por ejemplo Tkinter
que lo explicass muy bien!!!!!
Sigue con este fantastico blog