2017-03-02 5 views
2

몬테카를로 시뮬레이션을 사용하여 Pi를 계산하기 위해이 코드를 작성했지만 결과가 반복의 양에 관계없이 항상 2.0 정도임을 확인했습니다. Math.random()이 작동하지 않는 것 같아요. 코드는 노드 v7.5.0을 사용하여 Mac OS Sierra에서 실행됩니다.Node.js Math.random() 작동하지 않음

아이디어가 있으십니까?

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


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

     if ((x^2 + y^2) < 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"); 

답변

1

x^2 그것은 bitwise XOR있어, 하지 지수입니다.

지수 표시를 수행하려면 x*x, Math.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");

+0

을! 감사! –

관련 문제