如何用R的rbinom生成取值为1和2的二项分布随机数
解决方法
以下几种直接的方式可以满足你的需求:
方法一:条件判断转换
直接对rbinom()的输出做替换,用ifelse把0换成2,1保留为1:# 生成10个符合要求的随机数 result <- ifelse(rbinom(n=10, size=1, prob=0.75) == 0, 2, 1)方法二:数学运算转换(更简洁)
利用简单的算术转换,因为你需要0→2、1→1,直接用2 - rbinom()即可:result <- 2 - rbinom(n=10, size=1, prob=0.75)原理很简单:当
rbinom输出0时,2-0=2;输出1时,2-1=1,完全匹配你的需求,不需要额外的替换操作。方法三:正确使用
sample.int()
你之前用sample.int遇到困难,其实只要对应好概率就能直接生成目标结果。因为你要1的概率是0.75,2的概率是0.25(对应原二项分布中1和0的概率),所以可以这样写:result <- sample.int(n=2, size=10, replace=TRUE, prob=c(0.75, 0.25))这里
n=2表示取1和2两个值,prob参数按顺序对应1和2的出现概率,replace=TRUE表示可重复抽样(模拟二项分布的独立试验)。
内容的提问来源于stack exchange,提问作者Fionn
相关产品推荐
相关产品推荐

