Python - Random En Python

 
Vista:
Imágen de perfil de Francisco Gonzalez
Val: 15
Ha disminuido su posición en 10 puestos en Python (en relación al último mes)
Gráfica de Python

Random En Python

Publicado por Francisco Gonzalez (1 intervención) el 02/05/2017 19:19:09
Urgenteee.
Soy un mini programador, mini porque tengo 12 años.
Estoy en apuros, estoy comenzando un programa de automatización de radio, que trabaja en la lógica de canciones aleatorias y necesito crear un código en el que me organice una lista algo así
1
orden-canciones-pop = [3, 4, 1, 2]
y que cada ves que vuelva a reproducir una esa lista el orden sea diferente y las canciones no se repitan.
Intente con algunos codigos como este:
1
2
3
4
5
ordenpop = [1, 2, 3, 4]
for i in [0, 1, 2, 3]:
	print i
	ordenpop[i] = random.randint(1, 4)
print ordenpop
Pero en la salida siempre se repiten algunos numeros:
1
2
3
4
5
6
7
8
9
10
11
12
root@lushikato:~/Documentos/RADIOPCT/bin# ./radio.py 
0
1
2
3
[1, 2, 2, 4]
root@lushikato:~/Documentos/RADIOPCT/bin# ./radio.py 
0
1
2
3
[2, 3, 2, 2]
Ayuda y gracias de antemano
http://www.pctfgm.tk/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Random En Python

Publicado por tincopasan (1082 intervenciones) el 03/05/2017 04:47:55
¿y algo más simple?
1
2
3
4
5
import random
 
ordenpop = [1, 2, 3, 4]
random.shuffle(ordenpop)
print(ordenpop)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Random En Python

Publicado por kip (257 intervenciones) el 03/05/2017 04:50:46
Hola, tienes dos opciones:

La mas sencilla, si tienes una lista con ciertos numeros que quieres desordenar de manera aleatoria:

1
2
3
4
5
6
7
import random
 
ordenpop = [1, 2, 3, 4]
 
random.shuffle(ordenpop)
 
print ordenpop

La otra forma es crear un tipo de creación de numeros aleatorios que se agreguen a la lista mientras este no exista, y para mantener el tamaño adecuado colocamos un while para que busque el numero adecuado que no exista y lo agregue a la lista:

1
2
3
4
5
6
7
8
9
10
11
import random
 
ordenpop = []
 
for i in [0, 1, 2, 3]:
    while len(ordenpop) <= i:
        r = random.randint(1, 4)
        if r not in ordenpop:
            ordenpop.append(r)
 
print ordenpop

La desventaja de este es que si colocas un elemento mas en la lista a iterar, me refiero a la que se toma como referencia para tener el valor de i adecuado, el while se quedara en un loop infinito, ya que le estas dando a randint los limites de 1 a 4 es y al agregarle un elemento mas este tendra 5 iteraciones y es en la quinta y ultima donde intentara buscar un numero diferente (que no existira ya que la lista esta llena con 1....4) pero se quedara en el loop....

Ademas que me estoy basando directamente en i, que sera el valor de cada item, para verificar que la lista tenga el tamaño adecuado en cada iteracion.

Podrias decirnos si ya tienes una lista previa o quieres generar mediante una iteracion una lista desordenada ?

Tal vez esto te serviria:

1
2
3
4
5
6
7
import random
 
ordenpop = range(1, 5)
 
random.shuffle(ordenpop)
 
print ordenpop
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar