2016-04-16 7 views
0

これは宿題の問題です。私はまったく新しいものです。 これは問題です: Rには組み込み定数piがあります。ここでは、乱数を使用して πの値を推定します。パラメーターNをとる関数approx.pi()を作成します。この関数内、コード 以下のステップ:Rのパイ評価指標を作成しようとしています

  • (1)0
  • に等しいjを設定(2)N回繰り返しカウンタiとforループを開始。
  • (3)forループの内部では、runif()を使用して、0と1の間の2つのランダムな一様な数字xyを生成します。
  • (4)x^2 + y^2 < 1の場合は、jに1を加えます。
  • (5)forループを終了します。
  • (6)4×j/N

であり、これは私が持っているコードであるπの推定値を返します:することができ、私はいくつかの数の値が返さ取得していますが、それらは、PI近ところではない

approx.pi <- function(N) { 
    j <- 0 
    for (i in N) { 
     x <- runif(1,-1,1) 
     y <- runif(1,-1,1) 
     if (x^2+y^2< 1) { 
      j=j+1 
     } 
    } 
    return(4*j/N) 
} 
approx.pi(N=5) 

を誰も助けてくれる?ありがとうございました。

+0

が、私はために '書き込みするのが一般的だと思います(N i)において'が、 'N'がベクトルでない限り、ここでの構文ではありません。 – Natalie

+0

のためにNに私を組み込む必要がありますようにそれが見えた指示に知らない – Frank

+0

NをNでjに変更しました。今では、Nが非常に大きい数になったときにImが4に近づきました。 – Natalie

答えて

1

このコードは、唯一あなたが、私が編集したコードを試してみましたが、出力

approx.pi <- function(N) { 
    j <- 0 
    for (i in 1:N) { 
     x <- runif(1,-1,1) 
     y <- runif(1,-1,1) 
     if (x^2+y^2< 1) { 
      j=j+1 
     } 
    } 
return(4*j/N) 
} 
を持っている

for (i in 1:N){} 

に変更する必要があり、I = N.

for (i in N) {} 

1つの値に対して実行されます

これは私の出力です。 (あなたは5が小さすぎます)。

> approx.pi(5000) 
[1] 3.188 
> approx.pi(5000) 
[1] 3.1488 
> approx.pi(5000) 
[1] 3.1344 
> approx.pi(5000) 
[1] 3.1672 
> approx.pi(5000) 
[1] 3.1632 
> approx.pi(5000) 
[1] 3.1152 
私はR以外の他の言語でのループ
関連する問題