entertainment-lab
Rで円周率計算
http://entertainment-lab.blogspot.com/2011/06/r.html
> system.time({
+ set.seed(1)
+ points.num <- 100000
+ coords <- matrix(runif(2*points.num),ncol=2)
+ dist.from.origin <- apply(coords,1,function(x){sqrt(sum(x^2))})
+ myPI <- sum(dist.from.origin<1)/points.num*4
+ myPI
+ })
ユーザ システム 経過
0.944 0.026 0.966
rowSums, mean を使う。sqrt は不要。余計なことをしなければ速度は上がる。
> system.time({
+ set.seed(1)
+ points.num <- 100000
+ coords <- matrix(runif(2*points.num),ncol=2)
+ myPI <- mean(rowSums(coords^2) < 1)*4
+ myPI
+ })
ユーザ システム 経過
0.011 0.001 0.014
※コメント投稿者のブログIDはブログ作成者のみに通知されます