You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中生成指定比例的1、2、3、4?困惑rpois的用法

按指定比例生成离散随机数据的实现方法

你需要的是固定比例/频数的离散数据(1占50%、2占30%、3占15%、4占5%),rpois()函数是生成泊松分布随机整数的工具,它本身无法直接控制各数值的出现比例,更适配需求的是使用sample()函数,以下是具体实现:

方法一:生成近似指定比例的随机数据

通过sample()的prob参数设置权重,生成符合比例的随机样本:

# 生成100个符合指定比例的随机数
x <- sample(
  x = c(1, 2, 3, 4),
  size = 100,
  replace = TRUE,
  prob = c(0.5, 0.3, 0.15, 0.05)
)

# 查看频数,结果会接近1:50、2:30、3:15、4:5
table(x, useNA = "ifany")

方法二:生成完全精确频数的数据

如果需要严格得到1:50、2:30、3:15、4:5的频数,可以直接构造数据后打乱顺序:

# 构造精确频数的数据集
x <- c(rep(1, 50), rep(2, 30), rep(3, 15), rep(4, 5))
# 打乱数据顺序(可选步骤,若不需要随机顺序可省略)
x <- sample(x)

# 查看频数,结果完全符合要求
table(x, useNA = "ifany")

关于rpois()的说明

rpois()是基于泊松分布生成随机数,泊松分布的概率由参数λ决定,无法直接设置各数值的出现比例。如果硬要用它近似你的需求,只能通过调整λ让概率接近目标比例,但无法保证精确的频数。例如λ=1.6时,各数值的出现概率大致接近你的要求:

# 设置随机种子保证结果可复现
set.seed(123)
# 用rpois生成近似数据
x <- rpois(n = 100, lambda = 1.6)
# 查看频数,结果仅为近似,无法确保完全符合要求
table(x, useNA = "ifany")

内容的提问来源于stack exchange,提问作者Ahir Bhairav Orai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:51:57