Mostrando entradas con la etiqueta random. Mostrar todas las entradas
Mostrando entradas con la etiqueta random. Mostrar todas las entradas

miércoles, 16 de septiembre de 2020

Párrafo con colores random

Con este código queremos tener un 50% de probabilidades de interaccionar con el párrafo. Si la suerte determina que no podemos interactuar con el párrafo al pasar el cursor por encima se nos cambiará a una señal de prohibido. En caso contrario al pasar el cursor encima cambiará para hacer click y al actuar cambiará el color del texto a un valor hexadecimal aleatorio.

El código en GitHub: https://github.com/magnitopic/edujs/tree/master/jQueryColorRandom

Mira el codigo ejecutandose en relp.it: https://repl.it/@valoro/ParrafoColorRandom#index.html

index.html
 <!DOCTYPE html>  
 <html lang="en">  
 <head>  
   <meta charset="UTF-8">  
   <meta name="viewport" content="width=device-width, initial-scale=1.0">  
   <title>Document</title>  
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>  
 </head>  
 <body>  
   <p>Lo importante es no dejar de hacer preguntas.</p>  
   <script src="script.js"></script>  
 </body>  
 </html>  

script.js
 $(function(){  
   'use strict'  
   function aleatorio(){  
     return Math.random();  
   }   
   if( aleatorio()<= 0.5){  
     $('p').hover(function(){  
       $("p").css("cursor", "not-allowed");  
     })  
   }else{  
     $('p').hover(function(){  
       $("p").css("cursor", "pointer");  
     })  
     $('p').click(function(){  
       $("p").css("color", '#'+(0x1000000+(aleatorio())*0xffffff).toString(16).substr(1,6));  
     })  
   }  
 });  

miércoles, 26 de septiembre de 2018

Histograma en Python

Para hacer un histograma en Python vamos ha utilizar la librería matplotlib y generaremos los valores de manera aleatoria. El código es este:

import matplotlib.pyplot as plt
import random as ran
values=[]
for x in range(1,11):
   values.append(ran.randrange(11))
plt.hist(values, bins=10)
plt.show()
Usando el for vamos a ir generando números aleatorios y metiendo los en values.
Aquí entra la parte de la librería matplotlib, le pedimos que ejecute hist para indicar que queremos hacer un histograma, también le damos el valor de values para indicar con valores queremos trabajar y por ultimo indicamos los bins que determina el numero de columnas que queremos que se divida la información. Lo imprimimos todo y ya está.

Una variación que podemos hacer es que sin que tú hagas nada te genere mas de histograma con este codigo:


import matplotlib.pyplot as plt
import random as ran
def histograma():
    values=[]
    for x in range(1,11):
        values.append(ran.randrange(11))
    #values=[0,0.6,1.4,1.6,2.2,2.5,2.6,3.2,3.5,3.9,4.2,6]
    plt.hist(values, bins=10)
    plt.show()

for x in range(1,6):
    histograma()

Nota: En la mayoría de paginas web que ejecutan Python no sé podrán ver los gráficos en sí. Para ello necesitaras usar un programa mas potente que pueda procesar las librerías.
Si ejecutas este código en algunos editores de código como PyCharm, al importar las librerías no solo tendrás que importarla escribiéndola en el código si no que tendrás que importarla desde el propio editor. Aquí os enseñamos cómo hacerlo: https://www.youtube.com/watch?v=aROm4KYHXLI&feature=youtu.be

sábado, 18 de agosto de 2018

Donut de colores

 Utilizando la librería matplotlib.pyplot hemos conseguido generar unos puntos de diferentes colores y que no se impriman cuando están dentro de un rango, en este caso hemos creado una forma redonda como si fuera un Donut, aunque se puede cambiar para que haga cualquier forma.

El codigo Python:
from math import sqrt  
import random  
import matplotlib.pyplot as plt  
n = 10000  
p=q=0  
plt.figure(figsize=(7,7))  
for i in range(n):  
  p = random.random() * 8 - 4  
  q = random.random() * 8 - 4  
  r = sqrt(p ** 2 + q ** 2)  
  if 2<r<4:  
    x,y=p,q  
    plt.plot(x,y,'o',markersize=1)  
plt.show()  

El resultado de ese codigo:

En el código utilizamos coordenadas cartesianas para saber en qué lugar van a estar los puntos, generamos aleatoriamente las variables x e y que pondrá los puntos aleatoriamente por toda la pantalla, no sin antes usando un if para filtrar los puntos que son impresos en la pantalla, aquí es donde podemos elegir la forma de la figura que se termine de imprimir en pantalla.

En nuestro caso esto es la parte que crea esa forma de donut.

p = random.random() * 8 - 4   
q = random.random() * 8 - 4   
r = sqrt(p ** 2 + q ** 2)   
if 2<r<4:   
  x,y=p,q   
  plt.plot(x,y,'o',markersize=1)   

Primero generamos p y q aleatoriamente con random.random(), como esto solo genera números entre uno y cero la multiplicarlo por ocho y restarle cuatro le damos los márgenes que queremos para las coordenadas cartesianas. Luego aplicamos el teorema de Pitágoras para saber a qué distancia está ese punto desde el centro del plano.

Esta imagen puede que ayude a entender lo que estamos intentando hacer:


Y luego usando un if, si ese punto está dentro de las coordenadas dos y cuatro entonces les paso los valores de p,q y x,y para añadirlo al plot y luego imprimirlo.

Nota: Si ejecutas este código en algunos editores de código como PyCharm, al importar la librería matplotlib no solo tendrás que importarla escribiéndola en el código si no que tendrás que importarla desde el propio editor. Aquí os enseñamos cómo hacerlo: https://www.youtube.com/watch?v=aROm4KYHXLI&feature=youtu.be

miércoles, 2 de mayo de 2018

Un dado de 6 caras en JavaScript

La función Math.random() nos proporciona un número aleatorio entre 0 y 1, incluido el cero y excluido el 1. Permite generar valores de una distribución de probabilidad uniforme cero, uno.

La función Math.floor toma la parte entera de un número. No redondea, sino que toma la parte entera. Por ejemplo, Math.floor(5.7) es igual a 5.

Con estas dos funciones podemos generar los valores de un dado de 6 caras, usando la expresión siguiente.

Math.floor(Math.random()*6)+1




Veamos el código.

 <!DOCTYPE html>  
 <html>  
  <head>  
   <meta charset="utf-8">  
  </head>  
  <body>  
   <h2>Un dado de 6 caras</h2>  
   <p>Genera números aleatorios enteros entre 1 y 6.</p>  
   <button onclick="myFunction()">Lanza el dado</button>  
   <p id="salida"></p>  
   <script>  
    var texto='';  
    var resultado='';  
    function myFunction() {  
     var aleatorio=Math.floor(Math.random()*6)+1  
     texto+=aleatorio+" ";  
     resultado='<h3>'+aleatorio+'</h3>'+'<br><br>'+texto;  
     document.getElementById("salida").innerHTML = resultado;  
   }  
  </script>  
  </body>  
 </html>  

El programa en acción se puede ver en la siguiente página, y también tenemos disponible el código.

domingo, 17 de septiembre de 2017

Generación de números aleatorios sin repetición en Python

Puede descargar el archivo: sinrepeticion.py

Veamos varios métodos para conseguirlo. Partimos de una lista de números enteros entre 1 y 100 y deseamos tomar 10 números al azar.

Método 1

Seguidamente vamos a mostrar el código para generar números aleatorios sin repetición.

# Generación de 10 números aleatorios entre 1 y 100 sin repetición   
import random  
#creamos una lista con un primer número aleatorio  
lista=[random.randrange(100)+1] #el primer número nunca se repite  
n=1 #n indica la cantidad de números en la lista  
while n<10:  
 x=random.randrange(100)+1  
 norepe=True #suponemos inicialmente que el número generado no está repetido  
 while norepe:  
  for j in range(len(lista)):  
   if x==lista[j]:  
    norepe=False #aquí hemos detectado que el número si esta repetido  
  if norepe:  
   lista.append(x)  
   n+=1  
print(lista)  


Método 2

Veamos otro método programado de forma breve para obtener aleatorios únicos en una lista.

# Generación de 10 números aleatorios entre 1 y 100 sin repetición  
import random  
print(random.sample(range(1,101), 10))  


Método 3

En este método la idea es crear la lista entre 1 y 100, luego la desordenamos y finalmente imprimimos de ella únicamente los 10 primeros elementos.

# Generación de 10 números aleatorios entre 1 y 100 sin repetición  
import random  
miLista=list(range(1,101))  #creamos una lista del 1 al 100  
random.shuffle(miLista)     #desordenamos la lista  
print(miLista[:10])         #mostramos únicamente los 10 primeros