用R语言在一定范围内随机选取数据

将一个大的范围划分为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
}