首页 > 解决方案 > 如何生成具有某个恒定均值、sd、总和的 N 个随机数?

问题描述

我在 R 中编写了以下代码,用于生成具有一定均值、标准偏差、总和的 N 个随机数。例如,

x <- rnorm(n=40, mean =0.030, sd=0.007, sum=1.182)
hist(x)
mean(x)
sd(x)
sum(x)

但给了我这个错误:

rnorm 中的错误(n = 40,mean = 0.03,sd = 0.007,sum = 1.182):未使用的参数(sum = 1.182)

> hist(x)
> mean(x)
[1] 0.05
> sd(x)
[1] 0.2180813
> sum(x)
[1] 40

如何在 R 中编写一个随机数总和等于 1.182 的代码?

标签: r

解决方案


没有功能可以做到这一点(如果平均值或总和正是您指定的,它就不是真正的随机抽样,对吧?您正在从具有这些品质的分布中提取,但由于采样,每次拉动都会与这些数量有所不同错误),但你可以像这样强制它。运行一次,然后对其进行缩放以匹配所需的总和。

set.seed(42)

x <- rnorm(n=40, mean=0.030, sd=0.007)
sum(x)
#[1] 1.18893

x <- x * 1.182 / sum(x)
sum(x)
#[1] 1.182

推荐阅读