如何在R语言中生成包含1-100至少各一次的150个随机数?
解决R语言生成包含1-100每个数字至少一次的150个随机数的问题
你原来的代码使用sample(x=1:100, size=150, replace=TRUE)的问题在于,随机抽样存在概率随机性,确实可能漏掉部分数字。要满足1到100每个数字至少出现一次的要求,可以分两步实现:
- 先生成1到100的完整序列,确保每个数字都有一个实例
- 再从1到100中随机抽取50个可重复的数字(150-100=50)
- 将两部分合并后打乱顺序,得到符合要求的随机数序列
以下是具体代码:
library(tidyverse) set.seed(123) # 固定随机种子,保证结果可复现 # 生成1-100的完整序列 full_set <- 1:100 # 生成额外的50个可重复随机数 extra_nums <- sample(x = 1:100, size = 50, replace = TRUE) # 合并并打乱顺序 final_nums <- c(full_set, extra_nums) %>% sample() # 转换成tibble,按需排序 df <- tibble(Random_number = final_nums) %>% arrange(Random_number)
你可以通过以下代码验证结果是否符合要求:
# 检查是否包含1-100所有数字 all(1:100 %in% df$Random_number) # 应返回TRUE # 检查总数量是否为150 nrow(df) # 应返回150
如果不需要排序,直接去掉arrange(Random_number)即可。
内容的提问来源于stack exchange,提问作者NOZOMI
相关产品推荐
相关产品推荐

