zoukankan      html  css  js  c++  java
  • python 指数分布的模拟 expovariate

    python random.expovariate(lam)  也就是实现了特征值为 lam 的指数分布CDF的逆函数来生成一系列 x。
    1. 当lam=2, x 分布的特点是 max(x) <4.5,  80%的 x < 1.0. 这一点可以通过生成 逆函数 x = -ln(1-CDF)/lam, 将CDF取 random() 的分布(bin=0.1)来对比验证。参见图一
    2. 用这个 x list, 套用 指数分布的 CDF 公式 CDF = 1 - exp(-lam * x), 就可以得到 CDF 从 [0.0, 1.0) 的均匀随机分布。举例,用expovaiate(2.0) 得到 [x],从[0.0, 4) 按照公式生成的cdf,按CDF值步长0.1为一组,共10组 (bin_cdf_by_rand_x),pmf分布很均匀, 每个bin 都在 10% 左右. 参见 图二

    3. 然而,如果用其他方法随便生成 x 系列, 按照lam 公式得到到CDF 不会在 [0.0, 1.0)均匀分布。

      例如:
      随机生成 [x] [0.0, 10), 按照公式生成的cdf,按CDF步长为0.1为一组,分成10组 (bin_cdf_by_rand_x2),pmf分布很不均匀, 有85% 的 cdf 值在 >0.9这个分组,也就是说绝大多数点都集中在cdf曲线右上侧。 参见图二

    python <wbr>指数分布的模拟 <wbr>expovariate
    图一:x 分布 expovariate 与 公式计算法 对比
    python <wbr>指数分布的模拟 <wbr>expovariate

     图二: CDF 分布对比,expovariate 计算 和 random(0,10) 生成CDF 分布对比

  • 相关阅读:
    Luogu P2495 [SDOI2011]消耗战
    40. Combination Sum II
    39. Combination Sum
    22. Generate Parentheses
    51. N-Queens
    Codeforces Round #346 (Div. 2) E. New Reform
    Codeforces Round #346 (Div. 2) D. Bicycle Race
    HDU 5651xiaoxin juju needs help
    VK Cup 2016
    Educational Codeforces Round 10 D. Nested Segments
  • 原文地址:https://www.cnblogs.com/bob-dong/p/14248205.html
Copyright © 2011-2022 走看看