¿Cómo encontrar la raíz de 2 usando un algoritmo probabilístico?
Después de pensarlo un rato, existe un método, pero no es muy bueno y es necesario usar pi.
Principio:
En un cuadrado con longitud de lado 1, encuentra la siguiente integral.
Los límites superior e inferior de la integral son 0 y pi/4 , y el producto La función es sinX
El resultado de la integración es (1-raíz 2/2)
Aplicando la simulación de Monte Carlo, el número de veces que cae en la función anterior es N , ***prueba M veces, entonces hay:
(1-raíz 2/2) = N/M, entonces
Radroot 2 = 2*(1-N/ M)
código java:
public static void main(String[] args) {
int CONSTANT = 1000000;
java .util.Random rnd1 = nuevo java.util.Random(System.currentTimeMillis());
java.util.Random rnd2 = nuevo java.util.Random(System.currentTimeMillis() / rnd1.nextLong ());
int count = 0;
for(int i = 0; i < CONSTANT; i++) {
doble x = rnd1.nextDouble ();
p>doble y = rnd2.nextDouble();
if(x > Math.PI / 4) {
continuar; p>
}
if(Math.sin(x) < y) {
continuar;
}
contar++ ;
}
valor doble = (1 - 1.0 * recuento / CONSTANTE) * 2;
System.out.println(valor);
} p>
¡Pensaré en otros métodos que no requieran PI!