将一个大的范围划分为13个连续不等的小范围,并根据其大小用不同的概率随机抽取7个数据,且它们均不在同一小范围内
该回答引用ChatGPT
代码如下
# 定义大范围
large_range <- c(1:100)
# 划分为13个连续不等的小范围
split_range <- split(large_range, cut(large_range, 13))
# 设置每个小范围对应的概率
prob <- c(0.1, 0.15, 0.2, 0.1, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05)
names(prob) <- paste("range", 1:13)
# 随机选取7个数据
result <- c()
for (i in 1:7) {
# 根据概率随机选取一个小范围
selected_range <- sample(names(prob), 1, prob = prob)
# 随机选取一个数据
selected_data <- sample(split_range[[selected_range]], 1)
# 保存结果
result <- c(result, selected_data)
# 移除已经选择的小范围
prob[selected_range] <- 0
}