为什么我的功能有时只能工作?

时间:2018-11-29 20:56:37

标签: r

我具有以下功能:

samp315<-function(n=30, desmean=86, distance=3.4995) { 
  x = seq(from = 0, to = 100, by = 0.1)
  samp<-0
  while (!between(mean(samp),desmean-distance,desmean+distance)) samp<-sample(x,n,replace=TRUE)
  samp
}
percent <- samp315()

我几乎想在0-100范围内生成30个数字,平均值为86 +/- 3.4995,但是,每当我运行最后一行时,它将永久加载,或者当我幸运时,它将生成所需的列表结果。关于如何更改功能以改善其功能的任何想法?

1 个答案:

答案 0 :(得分:0)

正如Parfait在评论中所建议的那样,您正在使用一种随机化策略来提供您感兴趣的条件的可能性很小。对this question的其他回答没有帮助您吗?

您可以尝试其他一些可能的策略。

n = 30

# Using truncated normal
library(truncnorm)
x = round(rtruncnorm(n, a = -0.0495, b = 100.0495, mean = 85, sd = 3.5*2), 1)

# Using beta
sig = 3
x = round(100*rbeta(n, (0.85)*sig, (1-0.85)*sig), 1)

round(..., 1)旨在与向量x对齐。这些方法的值都只有85,几乎没有。这是您必须考虑的折衷方案。例如,如果要取平均值为85 +/- 3.5,则不能有太多低于10的值。因此,您必须降低选择此类值的可能性。使用该函数,当它完成时,您可能会发现更接近85的值表示出来。