Objetivo
Genere ( N) segmentos de línea aleatorios de longitud uniforme ( l), verifique si cruzan las tlíneas paralelas equidistantes ( ).
Simulación
¿Qué estamos simulando? La aguja de Buffon . Alise la arena en su caja de arena, dibuje un conjunto de líneas paralelas igualmente espaciadas (llame a la distancia intermedia t). Tome un palo recto de longitud ly colóquelo Nen el cajón de arena. Sea el número de veces que cruzó una línea c. Entonces Pi = (2 * l * n) / (t * c)!
¿Cómo estamos simulando esto?
- Tomar entrada
N,t,l - Con
N, t, ltodos siendo enteros positivos - Haz los siguientes
Nhorarios:- Generar una coordenada entera uniformemente aleatoria
x,y - Con
1 <= x, y <= 10^6 x,yes el centro de un segmento de línea de longitudl- Generar un entero uniformemente aleatorio
a - Con
1 <= a <= 180 - Sea
Pel punto donde el segmento de línea cruzaría el eje x - Entonces
aes el ángulo(x,y), P, (inf,0)
- Generar una coordenada entera uniformemente aleatoria
- Cuente el número
cde segmentos de línea que cruzan la líneax = i*tpara cualquier número enteroi - Regreso
(2 * l * N) / (t * c)
Especificación
- Entrada
- Flexible, tome la entrada en cualquiera de las formas estándar (por ejemplo, parámetro de función, STDIN) y en cualquier formato estándar (por ejemplo, cadena, binario)
- Salida
- Flexible, dé salida en cualquiera de las formas estándar (por ejemplo, devolución, impresión)
- El espacio en blanco, el espacio en blanco al final y al final es aceptable
- Precisión, proporcione al menos 4 decimales de precisión (es decir
3.1416)
- Puntuación
- ¡El código más corto gana!
Casos de prueba
Es posible que su salida no se alinee con estos, debido a la posibilidad aleatoria. Pero en promedio, debe obtener esta precisión para el valor dado de N, t, l.
Input (N,t,l) -> Output
----------- ------
10,10,5 -> ?.????
10,100,50 -> ?.????
1000,1000,600 -> 3.????
10000,1000,700 -> 3.1???
100000,1000,700 -> 3.14??
TL; DR
Estos desafíos son simulaciones de algoritmos que solo requieren la naturaleza y su cerebro (y tal vez algunos recursos reutilizables) para aproximarse a Pi. Si realmente necesitas Pi durante el apocalipsis zombie, ¡estos métodos no desperdician munición ! Hay nueve desafíos en total.
atambién por otro método, si es uniforme? (pensando en una burbuja Gauss 2D)
t > l? Dos de las siguientes soluciones hacen esta suposición, lo que simplifica bastante la verificación de la intersección.

