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

R语言自定义均匀分布函数生成范围偏移问题如何解决

R语言离散均匀分布模拟代码修正方案

错误原因

原有代码的问题集中在两个核心函数的逻辑缺陷:

  • fx_uniforme累积分布函数计算逻辑错误:循环内累加的是长度为b-a+1的向量,不符合离散均匀分布的CDF定义,输出不是合法的单值累积概率
  • uniforme_sim函数初始计数从0开始,未和预期的[a,b]区间做偏移匹配,最终输出范围偏移

修正后完整代码

# 离散均匀分布累积分布函数
fx_uniforme <- function(x,a,b) {
  if (x < a) {
    return(0)
  } else if (x >= b) {
    return(1)
  } else {
    return((floor(x) - a + 1)/(b - a + 1))
  }
}

# 离散均匀分布随机数模拟函数
uniforme_sim <- function(F,a,b) {
  x <- a
  u <- runif(1)
  while (F(x, a, b) < u) {
    x <- x + 1
  }
  return(x)
}

# 测试模拟及绘图
uniforme_sim(fx_uniforme,1,10)

m <- 1000
a <- 1
b <- 10 
Ya <- array(NA, dim = m)
for (i in 1:m) {
 Ya[i] <- uniforme_sim(fx_uniforme,a,b)
}
Ya

barplot(table(Ya))

验证说明

运行修正后的代码,模拟1000次得到的结果会落在1~10的预期区间内,柱状图可观察到10个类别的均匀分布效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:27:02