【发布时间】:2021-10-06 12:50:59
【问题描述】:
我需要生成随机数,直到满足条件(每个随机数的差之和为3000。)。
并且随机数已经从截断的正态分布中生成。
我已经尝试使用 while 循环 while(1) 和 if ,但它不能正常工作。
如何根据条件生成新的随机数序列?
truncnorm_rn <- rtruncnorm(1000,0,30,0,1)
a <- 0
b <- 0
c <- 0 # sum of diffrences between truncnorm random number
d <- NULL # New sequnce with condition
while(1){
a <- truncnorm_rn[1]
b <- truncnorm_rn[2]
c <- sum(a - b)
if(c > 3000) break
}
【问题讨论】:
-
你能提供你已经尝试过的while循环的代码吗?您是否尝试过使用
truncnorm包来生成随机数? -
我已经使用了 'truncnorm' 并生成遵循截断正态分布的随机数。但是,我需要生成新的随机数序列,直到每个随机数的差之和为3000。代码我将一起发布,但它不起作用。
-
所以澄清一下,您希望在 while 循环的每次迭代中生成一个由 1,000 个截断的正常数字组成的 new 集,并查看所有这些数字之间的绝对差是否大于3000.如果绝对差值大于3000,是否停止while循环?
-
while 循环的每次迭代只是比较前两个随机数,因此您需要增加一个计数器。或者,您可以使用
head(which(diff(truncnorm_rn)>3000),1)之类的东西来放弃循环 -
@HarrisonJones 谢谢你的好问题。是的,我想在差异总和超过 3000 之前退出循环。并希望生成具有该条件的序列。
标签: r random simulation