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

如何基于自定义非标准概率分布生成10个随机数(R语言实现)

基于自定义离散概率分布生成随机数(R语言实现)

你场景中的分布属于自定义离散概率分布,直接使用R内置的sample()函数即可完成随机数生成,无需手动实现抽样逻辑,操作如下:

实现代码

library(data.table)
# 构造你提供的概率分布表
distribution <- data.table(
  x = c(1,2,3,4,5,6,7,8,9,10), 
  p = c(0.1,0.1,0.2,0.05,0.05,0.1,0.1,0.2,0.05,0.05)
)

# 生成10个符合该分布的随机数
generated_samples <- sample(
  x = distribution$x,
  size = 10,
  replace = TRUE,
  prob = distribution$p
)

# 查看生成结果
print(generated_samples)

注意事项

  • 参数replace=TRUE为必填项,代表有放回抽样,符合离散随机变量重复抽样的逻辑,若设为FALSE最多只能生成10个不重复的样本,且分布拟合度会大幅下降
  • prob参数支持未归一化的概率向量,R会自动对输入的概率值做归一化处理,你提供的概率向量总和为1,可直接使用
  • 若需要验证生成的样本是否符合预期,可增大生成样本量后统计各取值的出现频率,会与给定的概率值基本匹配

如果你需要处理的是自定义连续概率分布,可通过逆变换采样方法实现:先生成均匀分布随机数,再通过累积分布函数的逆函数映射得到目标分布的随机数,你当前的离散场景无需用到该方法。

内容的提问来源于stack exchange,提问作者Jantje Houten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:36:12