Foros Python

Versión completa: random.choice() no es tan aletaorio
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Pues el problema está en mi "juego" que hice con mi librería, viendo las coordenadas que se generan aleatoriamente para colocar objetos en la pantalla, muchas veces las mismas coordenadas se repiten más de 10 veces, lo que me lleva a pensar que random.choice() no es al parecer 100% aleatorio.
Me podrían decir una alternativa para hacer lo mismo que random.choice(), pero 100% aleatorio?
PD: No quiero ninguna dependencia no estándar extraña, solo librerías que vienen incluidas con Python.
Acá les dejo un fragmento del código donde está la funcion que se encarga de generar los objetos aleatorios anteriormente mencionados:

Código:
  1. def drawbox(): # generate random objects
  2.   x, y, xpos, ypos = [], [], [], []
  3.   a, b, c, d = 1, 1, 1, 1
  4.  
  5.   while a <= 55: # Generando la caja limitadora
  6.       gotoxy(a, 1)
  7.       puts("═")
  8.       a += 1
  9.  
  10.   while b <= 55:
  11.       gotoxy(b, 25)
  12.       puts("═")
  13.       b += 1
  14.  
  15.   while c <= 25:
  16.       gotoxy(1, c)
  17.       puts("║")
  18.       c += 1
  19.  
  20.   while d <= 25:
  21.       gotoxy(55, d)
  22.       puts("║")
  23.       d += 1
  24.  
  25.  
  26.   gotoxy(55, 1)
  27.   puts("╗")
  28.   gotoxy(55, 25)
  29.   puts("╝")
  30.   gotoxy(1, 1)
  31.   puts("╔")
  32.   gotoxy(1, 25)
  33.   puts("╚")
  34.  
  35.   for xi in range(2, 54): # Generando los objetos
  36.       x.append(xi)
  37.       for yi in range(2, 24):
  38.           y.append(yi)
  39.           random.seed(time.time()); epochext = time.time()
  40.  
  41.           xrand = random.choice(x)
  42.           yrand = random.choice(y)
  43.  
  44.           gotoxy(xrand, yrand)
  45.           textcolor(random.choice(colorlist))
  46.           puts("×")
  47.  
  48.           yield xrand, yrand

Gracias
Algunas alternativas estándares son random.SystemRandom y el módulo secrets, especialmente para fines criptográficos.

  1. import random
  2. sr = random.SystemRandom()
  3. sr.choice(["a", "b", "c"])


  1. >>> import secrets
  2. >>> secrets.choice(["a", "b", "c"])


Saludos
(21-08-2018, 12:07 AM)Francisco escribió: [ -> ]Algunas alternativas estándares son random.SystemRandom y el módulo secrets, especialmente para fines criptográficos.

  1. import random
  2. sr = random.SystemRandom()
  3. sr.choice(["a", "b", "c"])


  1. >>> import secrets
  2. >>> secrets.choice(["a", "b", "c"])


Saludos
Gracias!