You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中计算rnorm数据集的均值及正确生成50组正态分布样本均值并绘制直方图

Hey there! Let's work through your R questions one by one:

问题1:计算rnorm生成数据集的均值

计算rnorm()生成的数据集的均值非常直接,只需要用R内置的mean()函数即可。举个简单例子:

# 生成100个均值为0、标准差为1的正态随机数
my_data <- rnorm(100, mean = 0, sd = 1)
# 计算均值
data_mean <- mean(my_data)
print(data_mean)
问题2:生成50组数据集并绘制均值的直方图

首先咱们来分析你之前代码的问题:

  1. 第一个方法的错误根源:
    你写的matrix(rnorm(30,0,sqrt(2)), nrow=30, ncol=50)只生成了30个随机数,然后把这30个数重复填充到了50列里,所以每一列的数值完全相同,计算出来的均值自然也一模一样。要生成50组各30个的随机数,你需要让rnorm()生成30*50=1500个不同的随机数,再构建矩阵。
  2. 第二个方法的问题:
    你定义nx=rep(0,n)但没有给n赋值,只要把n设为50,这个方法其实是可以正常运行的。

正确的for循环实现方法

如果你只想用for循环来得到50个mean(rnorm(30,0,sqrt(2)))的结果,下面是正确的代码:

# 设定组数
num_groups <- 50
# 初始化存储均值的向量
mean_vector <- rep(0, num_groups)

# 循环生成每组数据并计算均值
for (i in 1:num_groups) {
  # 生成一组30个符合要求的随机数
  group_data <- rnorm(30, mean = 0, sd = sqrt(2))
  # 计算该组的均值并存储
  mean_vector[i] <- mean(group_data)
}

# 绘制直方图,添加数值标签
hist(mean_vector, labels = TRUE)

也可以用矩阵方法修正后的版本

如果你想用矩阵的方式来实现,修正后的代码如下:

# 生成50组各30个随机数,共1500个
x <- matrix(rnorm(30*50, mean = 0, sd = sqrt(2)), nrow = 30, ncol = 50)
# 计算每一列的均值(每一列对应一组数据)
mean_vector <- apply(x, 2, mean)
# 绘制直方图
hist(mean_vector, labels = TRUE)

这两种方法都能得到你想要的50个均值的直方图,结果是一致的~

内容的提问来源于stack exchange,提问作者Jellybean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 14:22:44