2017-02-09 12 views
0

処理はJavaを使用する環境です。私はPiの値を計算するためにMonte Carloメソッドを使用しようとしています。私はダーツボード(四角形内の円)を作成しようとしており、ランダムに選択された点が円内で選択されると「はい」を返します。処理中のPiの値の計算

処理では、左上隅を原点とし、右向きを正のx軸、下向きを正の y軸とする座標系を使用します。

はここに私のコードです:

float circleX; 
float circleY; 
float r; 

void setup() { 
    size(360, 360); 
    circleX = 50; 
    circleY = 50; 
    frameRate(0.5); 
} 

void draw() { 
    background(50); 
    fill(255); 
    stroke(255); 
    fill(100); 
    ellipse(180, 180, 360, 360); 
    ellipse(circleX, circleY, 10, 10); 
    circleX = random(360); 
    circleY = random(360); 

    r = (circleX-180)*(circleX-180) + (180-circleY)*(180-circleY); 

    if (r < 32400) { 

    print("Yes! "); 

    } 
} 

しかし、多くの場合には、円内に「はい」返されませんし、円の外側の点は返さないポイント「はい。」何が間違っているかに関するアイデア?あなたは、ランダムな座標を生成し、それを描くライン交換する必要が

+0

2番目の円( 'ellipse(circleX、circleY、10、10);)とは何ですか? 'circleX'と' circleY'の値が更新される前に描画されます。 – Sentry

答えて

1

:あなたはあなたがチェックし、新たな座標を生成する前に、あなたがそれを行う方法を

// Generate new random coordinates 
    circleX = random(360); 
    circleY = random(360); 
    // Draw circle at those coordinates 
    ellipse(circleX, circleY, 10, 10); 

    // Check whether the coordinates are withing the big circle 
    r = (circleX-180)*(circleX-180) + (180-circleY)*(180-circleY); 

は、円が描かれています。

+0

解決済み。どうもありがとうございます!今、多くの意味があります。 – StopReadingThisUsername

+0

こんにちは!私は簡単な質問が1つありました。 グラフの現在の値をプロットする機能を追加しました。しかしながら、グラフをプロットするために乱数の数としてxCoordinate = xCoordinate + 1を使用することは、有限の水平空間のために非常に制限された方法であることが判明している。ランダムな点の数が増えるにつれて、前の値が後ろにシフトするように、常に最新の値が定数xCoordinateに追加されるようにグラフを作成できますか?これがあまり明確でない場合、私はあなたに私の質問をよりよく理解するのに役立つ現在のコードを送付します。もう一度ありがとう。 – StopReadingThisUsername

+0

新しい質問を作成します。コメントは意味のある答えや質問にはあまりにも制限されています。しかし、これを編集しないで、新しい質問を作成してください。質問ごとに1つの質問;) – Sentry

関連する問題