如何在R语言中从[-2,-1]和[1,2]双区间均匀分布随机抽样?
R中双区间均匀随机抽样的实现方案
核心思路
先为每个随机样本随机分配所属区间([-2,-1]或[1,2],分配概率各50%),再在对应区间生成均匀分布数值。这种方式既保证整体上两个区间的样本数量大致相等,又允许单次抽样中两个区间的样本数出现随机波动。
代码实现
假设需要抽取n个样本,示例代码如下:
# 定义总样本量 total_samples <- 100 # 随机为每个样本选择所属区间:0对应[-2,-1],1对应[1,2] interval_assign <- sample(c(0, 1), size = total_samples, replace = TRUE, prob = c(0.5, 0.5)) # 根据区间分配生成对应样本 result_samples <- ifelse( interval_assign == 0, runif(total_samples, min = -2, max = -1), runif(total_samples, min = 1, max = 2) )
代码说明
sample()函数以均等概率为每个样本分配区间,长期来看两个区间的样本占比接近1:1,但单次抽样的样本数会有自然波动;ifelse()结合runif()生成对应区间的均匀随机数,彻底避开[-1,1]的无抽样区间。
抽样结果验证
可以用直方图直观验证抽样分布是否符合要求:
hist( result_samples, breaks = seq(-2, 2, 0.1), main = "双区间均匀抽样结果", xlab = "样本数值", col = "lightblue" )
生成的直方图会在[-2,-1]和[1,2]区间呈现均匀分布,中间[-1,1]区间无样本点。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

