Contenido principal
Programación de computadoras
Curso: Programación de computadoras > Unidad 1
Lección 10: Declaraciones lógicas y condicionales (if)- Declaraciones condicionales (if)
- Desafío: pelota que rebota
- Más interacción con el ratón
- Desafío: tu primera aplicación de pintura
- Booleanos
- Desafío: analizador de números
- Operadores lógicos
- Desafío: tu primer botón
- Desafío: botón más inteligente
- If/Else - parte 1
- Desafío: tarjetas didácticas llamativas
- If/Else - parte 2
- Repaso: declaraciones lógicas y condicionales (if)
- Números aleatorios
- Proyecto: Bola 8 mágica
© 2023 Khan AcademyTérminos de usoPolítica de privacidadAviso de cookies
Números aleatorios
Aprende cómo generar números aleatorios en ProcessingJS al utilizar la función random() y comprueba sus valores con condicionales if.
Hemos estado usando nuestros condicionales
if
para revisar valores acerca del ambiente, como la posición actual del ratón del usuario, y responder de manera predecible.¿Pero qué pasa si queremos cosas que sean impredecibles? ¿Qué pasa si queremos que nuestro programa actúe de manera diferente cada vez que se ejecuta?
¡La aleatoriedad al rescate!
Podemos generar números aleatorios y usar condicionales
if
y else if
para cambiar el comportamiento de nuestro programa con base en los valores aleatorios.Por ejemplo:
var randNum = random(0, 10);
if (randNum < 5) {
text("¡Dulce!", 200, 200);
} else {
text("¡Travesura!", 200, 200);
}
El programa tiene como salida "¡Dulce!" la mitad del tiempo y "¡Travesura!" la otra mitad.
Cómo funciona:
- Se le asigna un número aleatorio a la variable
randNum
, empezando en 0 e incluyendo números hasta 10. Los valores regresados podrían incluir 0, 0.2, 3.3, 4, 5.5, 6.9, 8, 9 o 9.99, pero no el propio 10. - El condicional revisa si el número regresado es menor que 5, y si sí, escribe "¡Dulce!" o de lo contrario escribe "¡Travesura!'.
Algunas veces es más fácil tratar con número enteros que con números de punto flotante, de modo que podamos revisar valores exactos. Aquí hay unas cuantas funciones que convierten números de punto flotante a enteros:
Por lo general, queremos generar números aleatorios que se escojan de manera relativamente uniforme. Por ejemplo, si estamos simulando lanzar una moneda, entonces esperamos tener la misma probabilidad de obtener "Águila" o "Sol".
Este código logra ese objetivo:
var randFlip = floor(random(0, 2));
if (randFlip === 0) {
text("Águila", 200, 200);
} else {
text("Sol", 200, 200);
}
La variable
randFlip
siempre va a ser 0 o 1, puesto que llama floor()
sobre el valor que regresa random(0, 2)
. Para darte una idea de por qué ese es el caso, aquí está el resultado de llamar
floor()
sobre varios valores de random(0, 2)
:random(0, 2) | floor(resultado) |
---|---|
0.0 | 0 |
0.217… | 0 |
0.542… | 0 |
0.973… | 0 |
1.0 | 1 |
1.332… | 1 |
1.589… | 1 |
1.999… | 1 |
Los valores que regresa
random()
son aleatorios, así que no necesariamente se van a ver iguales a los valores en esa tabla. Si ejecutas el código de lanzar monedas solo 10 veces, podrías obtener una cadena de puras "Águilas" o de puros "Soles". Sin embargo, si lo ejecutas miles de veces y lleva sun registro de los resultados, verás que salen tanto "Águilas" como "Soles" alrededor de un 50% de las veces cada uno. Como una regla general, cuando nuestro objetivo es obtener una distribución justa y uniforme de valores enteros, es mejor usar
floor()
con random()
. La función
random()
es una muy buena manera de agregar un poco de variedad a nuestros programas. Sin embargo, hay que usarla con cuidado: averigua el rango de los números que estás generando, decide si necesitas redondear los números y revisa los valores de manera apropiada.¡En el siguiente proyecto vas a tener la oportunidad de intentar eso por tu cuenta!
¿Quieres unirte a la conversación?
- Wow , e aprendido lo suficiente para avanzar uno de mis juegos ")(9 votos)
- Ojalá se pudieran hacer trabajos en conjunto(3 votos)
- \\Khan Academy gratis, facil, sencillos, practicas, proyectos, muchos cursos, es excelente!!(10 votos)
- Como le hace random para generar números aleatorios? Siempre he tenido esa curiosidad de cómo le dices a algo que agarre cualquier número o si acaso le pasas una función que tenga un comportamiento aleatorio en el tiempo y que agarre cualquier valor de la función.(4 votos)
- ¿Hola aquí hay alguien que pueda ser mi amigo o amiga ?
es que yo no tengo amigos y me gustaría tener un amigo o amiga eh yo soy de Colombia(4 votos)- cuenta con migo tambien y saludos desde Ecuador drexl7yt :)(1 voto)
- He aprendido más de lo que imaginé. siiuuu!(2 votos)
- como puedo crear un programa aqui en khanacademy?(2 votos)
- buena en la pestaña de buscar "nuevo" asi yo le hago y la primera que te sale le picas y ya tienes tu programa nuevo(1 voto)
- ¿cuantos decimales puede limitar estas funciones de redondeo?(1 voto)
- Lupita Solis como que ese nombre me suena ? :v(1 voto)
- de donde toma valores el mouseX y el mouseY por que normalmente deberiamos definir un valor para cada variable que se usara(1 voto)
- mouseX, y mouseY, son variable predefinidas, y debemos poner un valor a cada variable porque sino no serviría de nada esa variable y solo ocuparía espacio en el codigo(2 votos)
- Excelente, me ayudan bastante.(1 voto)