Modulo random en python con ejemplos
Modulo Random |
En la sección Módulos, intentare ir explicando cada uno de los módulos y las
funciones que ellos contienen, vistos en el correr del blog.
El modulo random proporciona un generador de números aleatorios, por lo que es adecuado para una gran gama de aplicaciones: juegos, web, bases de datos, etc.
Importante decir para los que no saben, cuando queremos utilizar alguna función de un modulo, tenemos que importar el modulo con anterioridad. En python para importar un modulo hacemos lo siguiente:
Si lo queremos importar en el shell interactivo para probarlo:
»»»import random
O en la cabecera de nuestros programas para utilizar las funciones mas tarde:
import random
random.randrange([start,] stop [,step]) , random.randrange(stop)
El método randrange devuelve un elemento seleccionado al azar y como su nombre lo dice, el numero aleatorio que nos va a devolver tiene que estar dentro de un rango ingresado por nosotros.
start - punto de inicio del rango (el inicio se incluye en el rango)
stop - punto final del rango (no se incluye dentro del rango)
step - agrega un salto en el rango
Ejemplos de random.randrange:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import random
print random.randrange(10)
Nos devolverá un numero aleatorio entre 0 y 9 (el 10 no es incluido en el rango)
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import random
print random.randrange(1, 12, 2) #Las opciones son (1, 3, 5, 7, 9, 11)
print random.randrange(0, 11, 2) #Las opciones son (0, 2, 4, 6, 8, 10)
Nos devolverá un numero aleatorio entre 0 y 10 contando de 2 en 2 (0, 2, 4, 6, 8, 10)
random.randint(a, b)
La única diferencia que encuentro entre randint y randrange es que al usar randint(1, 10), el 10 es incluido dentro del rango, cosa que en la función randrange no pasa.
Ejemplo de random.randint:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import random
print random.randint(0, 5)#La salida va a ser: 0, 1, 2, 3, 4 o 5
random.choice(secuencia)
Devuelve un elemento aleatorio de una secuencia no vacía.
random.choice(["rojo", "negro", "verde"])
Esta funcion de eleccion se puede utilizar para elegir un elemento aleatorio a partir de una lista:
Ejemplo de random.choice:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import random
lista = [2, 190, False, "hola", "pelota", 123]
random.choice(lista)
random.random()
Devuelve un numero aleatorio de punto flotante entre 0.0 y 1.0
También se puede utilizar de la siguiente manera:
random.random() * 100 #Nos devuelve un numero de punto flotante entre 0.0 y 100.0
random.uniform(a, b)
Al igual que random.random, devuelve un numero de punto flotante entre a y b:
random.uniform(1, 2) #Devuelve un numero aleatorio entre 1.0 y 2.0
random.shuffle(a)
La función shuffle mezcla aleatoriamente el orden de los elementos.
Ejemplo de random.shuffle(a):
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import random
a = [1, 2, 3, 4, 5]
random.shuffle(a)
print a
[3, 2, 4, 5, 1]
Hay muchas mas funciones con el modulo random, estas son las que voy entendiendo y publicando. A medida que vaya conociendo otras funciones de random actualizare el post.
Cualquier duda o sugerencia espero tu comentario...
-
-
a mi me paso eso en un programa al manejar arreglos
pero me pase al python 2.7 y me corrio perfecto (estaba en el 3.3)
es cuestion de la version de python...a menos que te marque el error antes de ejecutarlo -
El problema está en return tuple, se devuelve un valor, pero ¿a dónde?
Hazlo así:listaPosible = [1,2,3,4,5,6,7,8,9]
random.shuffle(listaPosible)
tupla= tuple(listaPosible) # para convertir la lista en tuplaPor cierto que uso la versión 3.4.1.
-
-
Como se genera un random con un porcentaje de imprimir x valores iguales a 1 y m valores iguales a 0... Gracias
-
No entiendo bien la consulta.
-
La pregunta es ambigua, pero lo que solicita se puede hacer con una función en la cual se lleve un contador de elementos para el total a imprimir y con base en ello se subdivida la cantidad entre los 0's y 1's que se requieren.
Luego de allí, generar la cantidad de números con algún random entre 0 y 1 hasta que la cantidad se consiga. La sugerencia es poner todo en 0 y luego contar 1's generados. -
saca las panochas,saca klas pamochas
-
-
Muy bueno, y completo, la verdad me sirvio de mucho gracias
-
Hola muy bueno me gustó la explicación, necesito si me podes ayudar, armar un programa donde yo ingresó una cantidad de números ej 20 números y me armé varias combinaciones de grado 4. Que condiciones me convienen usar Saludos Pipi
-
para armar strings que no se repitan:
def nombre_aleatorio(etiqueta = "rpteoc_"):
import randomletras = []
for x in range(65,91):
letras.append(chr(x))
for x in range(97,123):
letras.append(chr(x))
for x in range(48,58):
letras.append(chr(x))
#for z in range(12):
nombre = ""
for x in range(12):
nombre = nombre + random.choice(letras)
#print "nombre aleatorio=", z , nombre
nombre = etiqueta + nombre
return nombre -
Buen aporte :).... estoy resolviendo un problema que me pide que lo resuelva con random... donde me piden 5 numeros aleatorios con un rango determinado... lei que tbm se puede usar el random.sample.. ejemplo, por favor? o solo usar el random.randrange?. Gracias
-
me podrian ayudar con este programa porfavor la verdad no lo entiendo.
Se desea generar numeros N aleatorios entre 1 y X, se espera que X sea una constante, y imprima los numeros generados en pantalla.-
ESPERO LE SIRVA A ALGUIEN:
#PROG. QUE GENERA NÚMEROS ENTRE 1 Y UN TOPE DADO POR CONSOLAimport time
import random
texto="PROGRAMA ALEATORIO"
print()
print (texto.center(50,"="))
cant_num=int(input("INGRESE CANTIDAD DE NÚMEROS A GENERAR: "))
x=int(input("INGRESE TOPE MÁXIMO :"))
print("TUS NÚMEROS SON:")
print()
num=1
for num in range(1,cant_num+1):
imprimir=random.randrange(x)
print(num,"° NÚMERO ",imprimir)
print()
num+=1
time.sleep(10) -
oye man y como puedo hacer para validar un if/else con el numero dado o volver a imprimirlo
-
-
Hola, me gustaria saber como puedo generar numeros alfanumericos de manera aleratoria del siguiente tipo: Tamanos fijos de 8, numeros y letras.
E0IL23X0
OICO6XI -
El blog muy bueno, lástima que la gente lo agarre para que les hagan sus trabajos y seguir de vagos. Espero que el moderador los anule.
-
Como tu dices; acá no se resuelven tareas. Lo que si hago aveces cuando plantean un ejercicio complejo y que vale la pena desarrollarlo, es crear una nueva entrada con ese ejercicio para que le sirva a todos. Saludos y gracias por visitar el blog!!!
-
stfu binch
-
-
hola, existe alguna forma de hacer que con random.choice generar una nueva lista pero que no se repitan los numeros entre si
-
Hola soy Esteban estudiante de matemáticas, resulta que hice un programa el cual llame random.py y ahora cuando importo el modulo random me lleva a mi archivo y no al modulo.
Que puedo hacer?-
Probaste cambiando el nombre de tu programa? Saludos
-
-
hola y si necesito una posicion aletoria en una matriz de 9*9 por ejemplo?
-
Y si generas un aleatorio para x y otro para y? Saludos
-
-
hola si, eso hice pero es que necesito algo mas complejo, este es mi codigo para el primer objeto en mi matriz:
tablero[random.randint(0,8)][random.randint(0,8)]=random.randint(1,7)
pero tengo que hacer un juego donde el usuario debe mover el objeto de la matriz, una vez que lo mueva necesito un ciclo donde en un arreglo me indique 3 objetos entre 1 y 7 de los cuales 2 deben ser aleatorios, no iguales, y distintos para cada vez que se repita el ciclo, y el tercer objeto debe ser igual al que esta repetido menos veces en mi matriz, adicionalmente luego de cada turno del usurario necesito un ciclo que me genere 3 posiciones aleatorias distintas y distintas en cada ciclo para ubicar los 3 objetos que esten en mi arreglo, la idea es que no se repitan ,es la primera vez que programo y estoy aprendiendo con python y estoy vuelta un ocho -
Hola, yo tendria que hacer una función que toma una palabra aleatoria de un archivo .txt , no se bien hasta ahora como armar la función, desde ya agradezco ideas. Saludos
-
Se me ocurre que podrias convertir el texto en una lista (cada palabra un elemento de la lista). Luego creas un número aleatorio que va a ser el índice de la lista para seleccionar la palabra. Saludos
-
Gacias Diego ! voy a probar con eso.
-
-
Estupendo post y muy útil. Estoy de acuerdo con que es una pena que algunos usuarios no sepan aprovechar la información para aprender, sino para intentar que les hagan su trabajo.
-
Gracias por escribir y valorar la info. Saludo grande 😉
-
-
oye cuando quiero que guarde números aleatorios
-
Justo eso quiero saber...si ya sabes como es, me avisas.
please.
-
-
como importaria una lista creada en el block de notas con random
-
tengo un problema
Dado un conjunto de datos, ejemplo:
994,919,815,862,1140,890,865,1120,1170,701,1160,701,901,874,744,742,874,963,1120,1010
a) Realice un muestreo aleatorio simple con reemplazo con un tamaño de muestra n.b) Realice un muestreo aleatorio simple sin reemplazo con un tamaño de muestra n.
la duda es q no se como ingresar el pseudocodigo para ingresar el tamaño de muestra que tome de la lista ingresada
-
Hola, esta excelente tu explicación, solo me falta averiguar random.seed.. 😀
-
Gracias por visitar el blog!!!
-
-
ayuda con esto por favor
Escriba un programa que soliciute al usuario el nombre de un producto, luego gener un aleatorio de 3 cifras y forme un codigo con las 4 primera letras del nombre unidos al numero generado.
Ayuda!! solo se que mas o menos inicia asi:
x=input('Ingrese el nombre del producto:') -
#Programa codigo
import random
producto=input("Ingrese el nombre dle producto: " )
aleatorio=random.randint(1,1000)
codigo=str(aleatorio)
producto=producto[0:4]+codigo
print("Codigo del producto es:",producto) -
Buenas ante todo saludos, soy nuevo por aca
me disculpan si tenia que presentarme en alguna parte del foro, pero no e revisado bientengo un problema con un ejercicio que me mandaron en clases de python
es el siguiente
>>>> Hacer un programa que solicice una oracion y divida las palabras en la pantalla con movinientos diferentes de cada palabra <<<<<
lo estoy haciendo en la pagina de ccodeskulptor.org (una excelente pagina donde puedes hacer tus programas y pasarlos con el link >>>>>
http://www.codeskulptor.org/#user41_FXiCUyquNL_0.py
________________________________________________________________
Código# programa
import simplegui
import randomoracion = ""
posicion = [75, 75]
ancho = 1100
alto = 800
intervalo = 900def update(texto):
global oracion
oracion = texto.split()
def tick():
x = random.randrange(50, 600)
y = random.randrange(20, 600)
posicion[0] = x
posicion[1] = y
def draw(canvas):
canvas.draw_text(str(oracion), posicion, 30, "skyblue")
frame = simplegui.create_frame("texto", ancho, alto)
texto = frame.add_input("Escriba su oracion:", update, 150)
frame.set_draw_handler(draw)
timer = simplegui.create_timer(intervalo, tick)
frame.start()
timer.start()python_____________________________________________________________
como pueden ver ya separe la oracion usando el metdo Split pero no se como hacer para que me muestre las palabras en lugares distintos, con distintos movimientos
E intentado tomarlo como una lista pero al tratar de usar >> str(oracion(0)) << me dice que no es elegible
-
existe una función que me de un numero aleatorio entre un rango, pero con una distribución de probabilidad que yo escoja ?
-
Perfecto, Gracias
-
Hola tengo una pregunta, he intentado hacer este ejercicio por activa y por pasiva y sigo sin saber exactamente como hacerlo, ¿me podrían ayudar?...
1.- El objetivo de este ejercicio es realizar una función que encuentre una expresión que añade signos + (suma) o - (resta) entre los dígitos 123456789 de manera que la expresión evaluada valga 100.
Por ejemplo, 1 + 2 + 3 - 4 + 5 + 6 + 78 + 9 = 100 es una posible solución.
Escribir una función suma_100 sin argumentos que devuelve una lista de números enteros (positivos o negativos) que cumpla las siguientes condiciones:
La suma de todos sus elementos es 100.
El resultado de imprimir todos los números en valor absoluto, en el mismo orden y sin ningún espacio entre ellos es la cadena '123456789'.
La lista no corresponde a la solución de arriba. Es decir, el resultado no es [1,2,3,-4,5,6,78,9].-
Hola, tienes algo hecho para poder guiarte??
Saludos y gracias por visitar el blog!!!
-
-
Hola! Necesitaría saber cómo generar aleatorios entre 80 y 85? Con random.random() va la secuencia entre 0 y 1 por defecto y preciso otro piso y otro techo. Saluds!!!
-
import random
x = random.randrange(80,86)
print x
Saludos!!!
-
-
hola
akguine me ayuda en estoLa prueba Poker, prueba grupos de números juntos como una mano de poker y compara cada mano con la mano esperada usando la prueba Chi-cuadrada. Esta es una prueba de independencia basada en la frecuencia con que ciertos dígitos se repiten en una serie de números.
Elabore un script en python que haga lo siguiente:
Utilizando un metodo para generar numeros aleatorios (de su preferencia), genere 50 numeros aleatorios como minimo (puede ser mucho mas si lo desea, y la vez puede solicitar al usuario que digite la cantidad de numeor a generar). Que puedan ser analizados por el test de poker para verificar si son indedendentes unos de otros.-
Hola Jonatan, has podido hacer algo en el código? Puedes ponerlo por acá para ayudarte!!!
Saludos y gracias por visitar el blog!!!
-
-
Como puedo hacer para que con random.randint no se repitan los números?
Gracias! Saludos!
-
#!/usr/bin/env python
# -*- coding: utf-8 -*-import random
deck = list(range(1, 10))
random.shuffle(deck)
while True:
----print deck.pop() -
Buenas, necesito generar números aleatorios, concretamente dos y que uno me aparezca con distinta probabilidad que el otro. Alguna idea?
-
Muchas gracias, ahora lo voy entendiendo mejor.
-
Hola necesito hacer una funcion que devuelva un orden aleatorio de una cantidad de jugadores de un juego.
Yo lo hice asi pero no me corre.
Import randomDef orden_aleatorio()
Lista=[]
Print(random.sample(list,len(lista))) -
thanks Broth, very helpful....
Como puedo imprimir un artículo y el precio de dicho artículo?
tengo muchos artículos y si yo (como usuario) eligiera uno, me gustaría saber como puedo hacer que me diga:usted a elegido 'nombre del ar´ticulo' y el precio de el mismo..
aiuda, no quiero usar if.
-
hice un for donde me imprime los artículos y le agregué un contador del 100 en adelante y llega hasta el 250.
los artículos se imprimen junto al precio en el mismo for...
quiero saber si puedo usar cada uno de esos números. -
mi_lista = ['faldas','pantalones','corbatas','gorras','pelucas','cuadernos','telefonos','mesas','sillas','sabanas','panes','hot dogs','perros','robots','cofres']
a = 0
b = 100
for elementos in mi_lista:
a+=1
b+=10
print (a -1 ,':',elementos)posicion = int(input('introduzca un numero'))
if posicion > 14:
print ('exede el número de artículos del Market')
else:
posicion = mi_lista[posicion]
print ('usted a elegido:', b)import random
#reparar este error
print ('los',posicion,'cuestan',':', (random.randrange(100,250)))tube que probar con el random...pero de igual manera quiero saber si puedo elegir ese número que me imprimió el random.
-
Buena info. Gracias
-
Gracias Alberto por visitar el blog. Saludos
-
-
Hola! Una pregunta, si deseo separar una palabra por silabas segun las reglas del idioma, deberia tratar las palabras como una lista?
-
Necesito una ayuda. Necesito un programa en python para iterar a traves de una secuencia de 50 enteros generados aleatoriamente entre 100 y 200 y crear 2 objetos, uno con pares multiplos de 3 y el otro con impares multiplo de 5.
-
Podría ayudarme en resolver el sig error que aparece en mi código.
Tengo una matriz inputs y quiero barajar las filas y guardarla en change pero me aparece lo sig.
Este es parte de mi código:
>>> inputs
array([[41., 43., 45.],
[42., 44., 46.],
[43., 45., 47.],
[44., 46., 48.],
[45., 47., 49.]])
>>> change = range(np.shape(inputs)[0])
>>> np.random.shuffle(change)
Traceback (most recent call last):
File "", line 1, in
np.random.shuffle(change)
File "mtrand.pyx", line 4865, in mtrand.RandomState.shuffle
File "mtrand.pyx", line 4868, in mtrand.RandomState.shuffle
TypeError: 'range' object does not support item assignment -
Quisiera saber cómo realizar la prueba de póker en python
Deja una respuesta
Buen día!! Te consulto, cuando pongo el siguiente código no me resuelve. Yo quiero que me devuelva la lista con distinto orden y y despues quiero que me devuelva una tupla. El código es:
listaPosible = [1,2,3,4,5,6,7,8,9]
return tuple(random.shuffle(listaPosible))
Y el mensaje de error: TipeError 'NoneType' object is not iterable
Agradeceria tu ayuda!! Sldos!!