Node.js Math.random()不起作用

时间:2017-03-02 19:26:39

标签: node.js math random montecarlo

我使用蒙特卡罗模拟编写了这段代码来估算Pi,但我注意到无论迭代次数多少,结果总是在2.0左右。我认为Math.random()可能不起作用。 该代码使用Node v7.5.0在Mac OS Sierra上运行。

有什么想法吗?

<input ID="ddMobileExtension" style="width:61px" />

1 个答案:

答案 0 :(得分:1)

x^2 不是取词,它是bitwise XOR

要进行取幂,请使用x*xMath.pow(x,2)x**2。如果你这样做,你将正确估计π≈3.14:

// Begin of code
iterations = 100000;
in_circle = 0;


function find_pi(){
    for ( i = 0; i < iterations; i++ ){
        x = 1 - 2 * Math.random();
        y = 1 - 2 * Math.random();

        if ( (x*x + y*y) < 1 ) 
            in_circle++;
    }

    console.log( "in_circle = ", in_circle );
    console.log( "iterations = ", iterations );
    console.log( "Estimated PI Value = ", 4 * in_circle / iterations );
}

var startTime = Date.now();
find_pi();
var endTime = Date.now();
console.log("\n===== Took us: " + (endTime - startTime) + " milliseconds");