Я пытаюсь изучить R. Я пытаюсь написать программу, которая вычисляет (приблизительно) число пи. Подробнее о методе
Мой код сейчас не работает!
f <- 0
s <- 0
range <- 10000
for (i in (1:range)) {
v <- sample(1:range, 1)/range
n <- sample(1:range, 1)/range
if ( sqrt (v*v + n*n) <= 1) {
f <- f + 1
} else if ( v <=1 && n <= 1) {
s <- s+1
}
}
print ( f/s )
f
попадает внутрь круга, аs
попадает вне круга из-за оператораelse if
. Следовательно, результаты дляf/s
кажутся (пи/4)/(1-пи/4) = 3,6597... Если вы заменитеelse if
толькоif
, то результат будет (пи/4)/1, и после умножения на четыре вы получите 4 * (пи / 4) = пи. - person Heikki   schedule 13.11.2018if( v <= 1 && n <= 1)
, потому чтоsample(1:range, 1)/range
всегда находится между1/range
и 1. Чтобы соответствовать методу Википедии, вам понадобитсяsample(0:range, 1)/range
, хотя на практике (большие значенияrange
) это не имеет значения много - person akraf   schedule 13.11.2018sum
затем просто подсчитываетTRUE
в этом векторе. Со временем я бы порекомендовал вам пройти через R Inferno а>. Например, вы бы сгорели в Circle 3 (не удалось векторизовать) ;-) - person akraf   schedule 13.11.2018