全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3704 2
2016-01-24
悬赏 20 个论坛币 已解决
RT
现在用的三角分布随机抽取函数是这样的:
TriAng_Pre <- function(vecabc)
{
  min <- vecabc[1]
  mode <- vecabc[2]
  max <- vecabc[3]

  u <- runif(1,0,1)
  if (u <= (mode-min)/(max-min) ){
     r=min+sqrt(u*(max-min)*(mode-min))  }else{
   r=max-sqrt((1-u)*(max-min)*(max-mode))
  }
r
}
   a=50
   b=70
   c=100
M <- matrix(c(rep(a,10000),rep(b,10000),rep(c,10000)),10000)
Result <- apply(M,1,TriAng_Pre)


我想把它定义成一个简单的函数,只要给出最小,中间,最大值 就可以得出结果,不用每次都把这些Code运行一遍。我想到的做法是这样的。分两步:
TriAng_Pre <- function(vecabc)
{
  min <- vecabc[1]
  mode <- vecabc[2]
  max <- vecabc[3]

  u <- runif(1,0,1)
  if (u <= (mode-min)/(max-min) ){
     r=min+sqrt(u*(max-min)*(mode-min))  }else{
   r=max-sqrt((1-u)*(max-min)*(max-mode))
  }
r
}


TriAng_Dis <- function(A,B,C)
{
   a=A
   b=B
   c=C
M <- matrix(c(rep(a,80000),rep(b,80000),rep(c,80000)),80000)
result <- apply(M,1,TriAng_Pre)
return(result)
}


得到的TriAng_Dis(A, B, C)就是我的三角分布函数。但是这个是分了两步定义的,有没有办法把TriAng_Pre 部分直接嵌入到TriAng_Dis的定义中,一次性地定义好这个函数呢?


谢谢!

最佳答案

qoiqpwqr 查看完整内容

你在TriAng_Dis里面加个循环
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-1-24 20:40:51
你在TriAng_Dis里面加个循环

复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-1-25 12:27:46
qoiqpwqr 发表于 2016-1-24 22:29
你在TriAng_Dis里面加个循环
赞!!!
谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群