Diferencia entre revisiones de «random()»

De ArduWiki
Saltar a: navegación, buscar
(Retornos)
 
(No se muestran 2 ediciones intermedias de otro usuario)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
 
La función random devuelve un número aleatorio entero de un intervalo de valores especificado entre los valores min (inclusive) y max (hasta max-1).
 
La función random devuelve un número aleatorio entero de un intervalo de valores especificado entre los valores min (inclusive) y max (hasta max-1).
 +
{{Nota|Si quiere realmente generar un número aleatorio entre una ejecución y otra, debe cambiar el valor de la "semilla" con [[randomSeed()]].}}
  
[[Nota| Si quiere realmente generar un numero aleatorio entre una ejecución y otra debe cambiar el valor de [[randomSeed()]].}}
 
 
1.13 randomSeed()
 
 
== Sintaxis ==
 
== Sintaxis ==
 
<pre>
 
<pre>
Línea 13: Línea 11:
 
== Parámetros ==
 
== Parámetros ==
 
;max: numero maximo pero no lo incluye. Hasta max-1
 
;max: numero maximo pero no lo incluye. Hasta max-1
;min: numero minimo incluido.
+
;min: numero minimo incluido (cero cuando no se especifica este parámetro).
  
 
== Retornos ==
 
== Retornos ==
Retorna un numero aleatorio entero tipo [[long]].
+
Retorna un número aleatorio entero tipo [[long]], cuyo valor oscilará entre '''min''' y '''max'''-1.
 +
 
 +
== Comentarios ==
 +
{{Tip|Este comando tarda 2245 ciclos de CPU.}}
  
 
== Advertencias ==
 
== Advertencias ==
Nada.
+
Es un generador pseudo-aleatorio, lo que quiere decir que si la semilla (valor de iniciación) permanece constante, la secuencia de valores generados también lo será. Hay dos formas de obtener la semilla en tiempo de ejecución y con relativa aleatoriedad:
 +
# El valor retornado por [[analogRead()]] sobre un pin analógico "flotante" (libre, sin conectar a nada), aunque la semilla estaría limitada a la resolución del ADC.
 +
# Una técnica que involucra aprovechar el desfase natural entre el oscilador principal y el del temporizador "watchdog", pulsar [https://gist.github.com/endolith/2568571 aquí] para leer sobre el tema (en inglés y aplica únicamente para arquitecturas AVR).
  
 
== Ejemplo ==
 
== Ejemplo ==
Línea 28: Línea 31:
  
 
== Vea también ==
 
== Vea también ==
* [[ramdomSeed()]]
+
* [[randomSeed()]]
  
 
== Referencias ==
 
== Referencias ==

Revisión actual del 19:39 11 jun 2019

Descripción

La función random devuelve un número aleatorio entero de un intervalo de valores especificado entre los valores min (inclusive) y max (hasta max-1).

Nota: Si quiere realmente generar un número aleatorio entre una ejecución y otra, debe cambiar el valor de la "semilla" con randomSeed().


Sintaxis

random(max);
random(min, max);

Parámetros

max
numero maximo pero no lo incluye. Hasta max-1
min
numero minimo incluido (cero cuando no se especifica este parámetro).

Retornos

Retorna un número aleatorio entero tipo long, cuyo valor oscilará entre min y max-1.

Comentarios

Tip: Este comando tarda 2245 ciclos de CPU.


Advertencias

Es un generador pseudo-aleatorio, lo que quiere decir que si la semilla (valor de iniciación) permanece constante, la secuencia de valores generados también lo será. Hay dos formas de obtener la semilla en tiempo de ejecución y con relativa aleatoriedad:

  1. El valor retornado por analogRead() sobre un pin analógico "flotante" (libre, sin conectar a nada), aunque la semilla estaría limitada a la resolución del ADC.
  2. Una técnica que involucra aprovechar el desfase natural entre el oscilador principal y el del temporizador "watchdog", pulsar aquí para leer sobre el tema (en inglés y aplica únicamente para arquitecturas AVR).

Ejemplo

byte n = random(0,256); //Genera un numero entre 0~255 (max-1)
int n = random(1024);  //Genera un numero entre 0~1023

Vea también

Referencias