Cómo elegir un número aleatorio de [0,1]

Supongo que te refieres a [0,1), un detalle menor en la semántica pero uno enorme en la implementación. La respuesta es, depende de para qué lo quiere, cuántos quiere y si compara un conjunto de tales números con otros.

En primer lugar, no existe tal cosa como “aleatorio”. Sólo “impredecible”. Si conoce las características exactas de tamaño y peso de una moneda, las fuerzas exactas que se le aplican cuando la lanza, las propiedades exactas del aire por el que se mueve y la mesa en la que aterriza, puede calcular si aterrizará cara o cruz . Pero no puedes saber todas esas cosas exactamente, o repetirlas exactamente. El resultado de su incertidumbre y la variabilidad de esos factores generalmente significa que la moneda aterriza Caras la mitad del tiempo, y no tiene medios para determinar cuál es más probable.

Eso es todo lo que significa cuando lo llamamos “aleatorio”. Esto se aplica a todo lo sugerido en otras respuestas, incluso la desintegración radiactiva. Ese es único porque no tenemos los modelos necesarios para hacer los cálculos, incluso si pudiéramos medir los parámetros que requeriría. Eso no significa que los modelos no existan.

El generador de números aleatorios de una computadora funciona generando cada número aleatorio a partir del anterior (llamado “semilla”). Entonces, literalmente, cada número generado es predecible a partir de su semilla, lo que lo hace todo menos aleatorio. (Esta característica puede ser útil, para asegurarse de que los cambios en el programa produzcan resultados consistentes). Si desea saber cómo hacer un algoritmo de este tipo, debe investigarlos específicamente.

Pero generalmente no le interesa el valor exacto, solo un rango. Estos algoritmos se seleccionan cuidadosamente para que, por ejemplo, las semillas en el rango [0.3,0.4) produzcan una distribución uniforme de nuevos números en el rango [0,1). De esta manera, para qué lo usa (por ejemplo, simular una tirada de 10 caras en un juego) no le permite predecir el próximo valor que usa.

El problema con tales algoritmos se encuentra cuando intentas comparar estrategias para el mismo juego. Una semilla inicial que utiliza para la estrategia A puede producir una secuencia lo suficientemente cercana a “aleatoria” para evaluar un solo juego de forma aislada, pero puede ser lo suficientemente predecible como para que múltiples resultados dependan más de ella que la estrategia, o favorezcan indebidamente una estrategia .

Entonces, si desea un solo número, use el generador de números aleatorios de una computadora. O tira un dado de diez lados por cada dígito que necesites. Si quieres una secuencia larga, siembra con lo que quieras. Si necesita secuencias largas, o para comparar varias, cambie la semilla ocasionalmente. Si lo siembras en función del reloj, asegúrate de no obtener intervalos fijos basados ​​en el espacio de ejecución.

Y si esto le parece demasiado empírico, busque asesoramiento experto.

La generación de números aleatorios no es exactamente una consecuencia de eventos aleatorios cuantizados. La generación de números aleatorios se realiza utilizando una ecuación polinómica lineal. Entonces, en esencia, cada número aleatorio generado puede predecirse dada la naturaleza de la generación.

Esta es una idea simple para generar lo requerido:
Dado que el rango de números aleatorios es solo 2, deberíamos considerar ampliar el rango para una mejor aleatorización.
Por ejemplo: tener una matriz de A [] = {0,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,0,1,1,1 , 0,0,0}
Cuanto mayor sea el número de elementos, mejor será la aleatorización.
Ahora que ha extendido el rango, use la ecuación polinómica de aleatorización:
Aquí la ubicación del elemento de matriz es Xn, es decir, A [Xn].
m -> Número máximo producido
a, b-> Algunos enteros arbitrarios.
También puede usar esta ecuación de manera similar para generar elementos de la matriz A manteniendo m como 2.

Siendo realistas, es prácticamente imposible. La gran mayoría de los números de [0, 1] son ​​trascendentales, solo hay un número contable de algebraicos en este rango), es decir, la probabilidad de elegir un número algebraico en el rango es 0, sin embargo, no podemos expresar adecuadamente estos trascendentales, así que vas a elegir un número algebraico cada vez (probablemente: incluso uno racional).

Dicho esto, hay muchos métodos para generar números aleatorios, la mayoría de ellos utilizan procesos pseudoaleatorios, es decir, una función que es tan complicada que, a todos los efectos prácticos, “se ve” y “se siente” al azar. Agrega algo de semilla que ayuda a su causa (por ejemplo, el reloj) y lo hace menos predecible.

En aplicaciones donde la importancia de la aleatoriedad es mayor (es decir, que el resultado de su generador de números aleatorios no puede ser predicho por un tercero hostil que pueda estar familiarizado con su generador de números pseudoaleatorios), puede medir algunas propiedades físicas que son realmente aleatorias , por ejemplo, ruido térmico en un tubo de vacío, luego renormalícelo para que sea uniforme en el rango que necesita.

Como otros han señalado, en un sentido matemáticamente correcto no puedes.

En la práctica, en una computadora, puedes.

Usted especifica el rango [0,1]. En realidad, eso es un poco más complicado que un número aleatorio en el rango [0,1] y lo usaré en su lugar.

Un generador de números aleatorios en una computadora (un PRNG) genera un número entero aleatorio entre dos números, típicamente 0 y 2 ^ 31 – 1 (el número entero más grande posible) inclusive. Luego (o usted, según el idioma) divide este número entre 2 ^ 31, produciendo un número en el rango [0,1].

No puede tomar el valor 1, porque el número entero máximo devuelto es 2 ^ 31 – 1, y se divide por 2 ^ 31. Esto se alinea con la forma en que generalmente se usan números aleatorios en programas reales. Puede hacer el rango [0,1] generando un número aleatorio entre 0 en 2 ^ 31-1, y descartando cualquier respuesta mayor que 2 ^ 30 hasta obtener un valor menor o igual a 2 ^ 30, y luego dividiendo por 2 ^ 30. Esto te daría números en [0,1] si realmente los quisieras, pero nunca he visto esto en la práctica.

Esa es una función básica en cualquier programa que se ocupe de cálculo.

Python: aleatorio ()
Excel: RAND
Prácticas Java -> Generar números aleatorios

Y así. Estos son realmente pseudoaleatorios ya que no existe una fórmula para generar números aleatorios verdaderos, pero lo suficientemente aleatorios para la mayoría de los casos. Para experimentos más precisos se utilizan cosas como ciertos isótopos radiactivos, pero no creo que este sea su caso.

Solo podrá elegir un número racional o (si configura un algoritmo adecuadamente) un número algebraico. Como esos tienen una medida cero en el continuo, lo que elija no será un elemento verdaderamente representativo de [0,1], ya que ni siquiera podrá especificar un trascendental aleatorio.

Depende de la precisión que quieras. Por ejemplo, elija un número aleatorio de 0 a 10 ^ n, que es fácil ya que se implementa en la mayoría de los idiomas. Luego divide el número aleatorio por 10 ^ n.

n es la precisión, es decir, el número de dígitos después del decimal.

MIENTRAS cierto:
Tirar una moneda.
Si aparece CABEZAS:
tirar de nuevo, escribiendo 1 para HEADS, 0 para TAILS.
más:
DETENER

Esa cadena de dígitos se puede usar como dígitos binarios a la derecha del punto binario para un número aleatorio.

NB: Esto solo produce números de [0,1), no [0,1]

Esta pregunta está relacionada con la computadora. Por lo tanto, utilice el concepto de python y podrá elegir fácilmente un número aleatorio.