R语言如何生成固定长度、固定和的随机二元向量
R语言生成固定长度、总和固定的随机二元向量方案
核心逻辑
你需要的0-1二元向量总和固定为15,等价于长度为100的向量中恰好包含15个1、85个0,随机生成的本质是从100个位置中无放回随机抽取15个位置赋值为1,其余位置赋值为0。
具体实现代码
方法1:直接抽样赋值(最常用、精度100%)
# 初始化长度为100的全0向量 binary_vec <- rep(0, 100) # 随机抽取15个不重复的位置,赋值为1 binary_vec[sample(x = 1:100, size = 15, replace = FALSE)] <- 1
结果验证
运行以下代码可确认生成结果符合要求:
- 验证长度:
length(binary_vec)输出为100 - 验证总和:
sum(binary_vec)输出为15
补充说明
- 如果需要可复现的随机结果,可在生成代码前加一行
set.seed(自定义整数),比如set.seed(2024),后续每次运行都会生成完全相同的向量。 - 不要使用
rbinom()函数实现该需求:二项分布生成的0-1向量总和是随机波动的,无法严格固定为15,仅适合总和允许波动的场景。
内容的提问来源于stack exchange,提问作者Chenying Gao
相关产品推荐
相关产品推荐

