程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在python中实现特定的分发

发布于2019-12-06 15:25     阅读(785)     评论(0)     点赞(30)     收藏(4)


我想返回1<l<10的概率1/(2^(l-1))

我应该怎么做而不是:

    x = random()
    if x < 0.5:
       return 2

等等

谢谢


解决方案


这将很有趣。。。我对这些事情有些不满意,所以好的材料师可以解决我的问题。

要从公式生成分布,您首先需要做一些积分并计算指定间隔的累积密度函数。特别是,我们需要开始计算归一化常数。 计算归一化常数

对于“ k”,该积分给出:

k值

累积密度函数的“含义”是“获得属于我需要的区间的某个数字的概率是多少?”。这个问题可以用另一种方式看待:“取一个小于或等于10的数字的概率必须为1”。这导致以下方程式有助于查找参数“ C”。请注意,第一个热量是k,第二个热量是2 ^(1-x)的一般积分,其中我用10代替了x。 几乎全CDF

解决了这个问题,我们终于到达了CDF(再次,找到它的方法可能更容易):

最终CDF

此时,我们需要反转X的CDF。X现在是0到1之间的随机数生成器。公式为: 随定律分布的随机值

在python代码中,我尝试了以下操作:

import numpy as np
import matplotlib.pyplot as plt

a=[ 1-   np.log2(1-(1-2**(-9))*np.random.rand()) for i in range(10000)]

plt.hist(a, normed=True)

在此处输入图片说明

有道理吗?



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/168712/e43983c202a518a0083b/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)