如何在R语言中生成1精确23次、2精确24次的随机索引?
如何在R语言中生成精确次数的随机索引?
这个问题我之前也碰到过!用sample的prob参数确实只能保证长期的概率分布,没法单次精确控制元素的出现次数。不过有个非常直观且可靠的办法来实现你的需求:
核心思路
先手动构建一个包含精确次数元素的向量,再对这个向量进行随机打乱,这样既保证了每个元素的出现次数完全符合要求,又实现了随机性。
具体代码实现
# 第一步:创建包含23个1和24个2的向量 fixed_vector <- c(rep(1, 23), rep(2, 24)) # 第二步:随机打乱这个向量的顺序,得到最终的随机索引 random_index <- sample(fixed_vector) # 可选:验证结果的次数是否符合要求 table(random_index)
代码解释
rep(1, 23)会生成23个重复的1,rep(2, 24)生成24个重复的2,用c()合并后就得到了一个顺序固定的向量。sample(fixed_vector)默认采用无放回抽样,会返回原向量所有元素的一个随机排列,完美满足你“每次都精确出现指定次数”的要求。
你可以多次运行这段代码,每次得到的random_index都是随机的,但用table()查看时,1的出现次数一定是23次,2一定是24次。
内容的提问来源于stack exchange,提问作者Gompu
相关产品推荐
相关产品推荐

