martes, 12 de junio de 2018

Generar aleatorios enteros en Python

Reto: Aleatorios

Generar un número aleatorio.




Método 1

Importamos la librería random y usamos randrange.
Tenemos que poner hasta 101 para que se llegue a 100, puesto que el último número no se alcanza. Por tanto, el rango obtenido estará entre 0 y 100 ambos incluidos.


import random
x=random.randrange(101)
print('Número elegido:',x)


Método 2

Importamos la librería random y usamos randint que nos da valores entre 1 y 100, ambos incluidos.
En la segunda línea de código hemos añadido random.seed() que baraja la serie de números aleatorios. Python, al igual que otros lenguajes, no trabaja con números aleatorios sino con números pseudoaleatorios, que se obtienen mediante algoritmos. Las series de números pseudoaleatorios que se obtienen generalmente son bastante adecuadas, pero tienen el inconveniente de ser series finitas, por ejemplo de 65.000 números. Pero esta serie luego se repite, y comienza por el mismo valor y los demás van en el mismo orden. Lo que hace la sentencia random.seed() es inicializar la semilla, lo que equivale a barajar esa larga serie de números aleatorios con la finalidad de que no se repitan en el mismo orden, y así obtener un comportamiento más cercano a lo que sería un proceso aleatorio real, como el de obtener números sacando bolas de un bombo, tirando dados, o sacando cartas de un mazo barajado.


import random
random.seed()
x=random.randint(1,100)
print('Número elegido:',x)


Método 3

En lugar de importar la librería random entera lo que hacemos es importar de ella únicamente el método randrange. Si no vamos a usar otros métodos de esta librería, puede resultar interesante hacer esto ya que no cargamos en memoria toda la librería que puede llegar a ser muy pesada y ralentizar nuestros procesos.
Al usar randrange ya no tenemos que poner  random.randrange con poner únicamente la palabra  randrange es suficiente.


from random import randint
x=randint(1,100)
print('Número elegido:',x)


Método 4

El uso de random.choice nos permite elegir aleatoriamente entre los valores de una serie que puede ser una lista, o un rango, como en este caso.


import random
x=random.choice(range(1,101))
print('Número elegido:',x)


Método 5

Hasta ahora hemos generado números aleatorios enteros. Al usar random.random lo que hacemos es generar un número aleatorio con decimales que varía entre cero y uno, pudiéndose alcanzar el cero, pero no el uno. Esto es lo que en estadística se denomina una distribución de probabilidad uniforme [0,1).

import random
print(random.random())


Método 6

Con random.random generamos un número aleatorio que se ajusta a una distribución de probabilidad uniforme [0,1), puede incluir el cero pero no llega nunca a 1. Al multiplicar por 200 lo que hacemos es amplificar el rango y ahora irá entre [0,200). Al sumar 5000 desplazamos hacia la derecha el eje y ahora el rango de variación estará entre [5000,5200). Si queremos que llegue a alcanzar en algún momento el valor 5200 tendremos que sumar 1, y así el mínimo que se puede llegar a obtener es 5001 y el máximo 5200, todos ellos números enteros ya que hemos añadido int que trunca la parte decimal.


import random
print(int(random.random()*200+5000)+1)

Veamos el valor máximo y mínimo generando 1000 aleatorios de este tipo.

import random
random.seed()
L=[]
for i in range(1000):
  L.append(int(random.random()*200+5000)+1)
print('maximo: %d minimo: %d' % (max(L),min(L)))


Método 7

Importamos la librería random para poder manejar números aleatorios.

Creamos una lista con list. Usando range conseguimos que la lista comience en 0 y finalice en 100, para ello tenemos que usar el valor 101 en el rango. Imprimimos la lista L.

Luego usamos random.choice para elegir un valor de la lista de forma aleatoria. Así, ya podremos mostrar en pantalla un número aleatorio entre 0 y 100, ambos incluidos.


import random
L=list(range(101)) #creamos la lista L
print(L)
x=random.choice (L)
print('Número elegido:',x)

No hay comentarios:

Publicar un comentario