我在Matlab中有以下代码:
alpha=5.5; beta=3.1; a=0; b=1; c=2.5;
X=0; Y=c; % Initial values
while Y > gamma(alpha+beta)/gamma(alpha)/gamma(beta)...
* X.^(alpha-1).* (1-X).^(beta-1);
U=rand; V=rand; X=a+(b-a)*U; Y=c*V;
end;
X;
我希望转换为R.这是我的尝试(操作符出错):
alpha <- 5.5
beta <- 3 .1
a <- 0
b <- 1
c <- 2.5
X <- 0
Y <- c
while(Y > gamma(alpha+beta)/gamma(alpha)/gamma(beta))
{
*X.^(alpha-1).*(1-X).^(beta-1) # incorrect line
U=runif(1, 0, 1)
V=runif(1, 0, 1)
X=a+(b-a)*U
Y=c*V
}
print (X)
答案 0 :(得分:1)
beta
分配无效,您需要与{
位于同一行的while
:
alpha <- 5.5
beta <- 3.1
a <- 0
b <- 1
c <- 2.5
X <- 0
Y <- c
while (Y > gamma(alpha + beta)/gamma(alpha)/gamma(beta) * X^(alpha - 1) * (1 - X)^(beta - 1)) {
U <- runif(1, 0, 1)
V <- runif(1, 0, 1)
X <- a + (b - a) * U
Y <- c * V
}
检查你的代码以确保你正在做你认为你正在做的事情,在while
之后没有在线上做任何分配,循环立即为我退出(但运行没有错误)和打印0
的{{1}}。
修改强> 由于@Khashaa的好地方,现在正确运行