二项分布python实现_初级概率分布的Python实现

(一)理论准备

概率分布,要么是连续概率分布,要么是离散概率分布,这取决于它们是定义连续变量还是离散变量的概率。https://zh.wikipedia.org/wiki/%E6%A6%82%E7%8E%87%E5%88%86%E5%B8%83​zh.wikipedia.org

离散概率分布

概率分布要么是连续概率分布,要么是离散概率分布,这取决于它们是定义连续变量还是离散变量的概率。

概率质量函数(probability mass function,简写为pmf)是离散随机变量在各特定取值上的概率。概率质量函数和概率密度函数不同之处在于:概率质量函数是对离散随机变量定义的,本身代表该值的概率;概率密度函数是对连续随机变量定义的,本身不是概率,只有对连续随机变量的概率密度函数在某区间内进行积分后才是概率。

概率质量函数可以定义在任何离散随机变量上,包括:伯努利分布、二项分布、几何分布、泊松分布。

参考:https://zh.wikipedia.org/wiki/%E6%A6%82%E7%8E%87%E8%B4%A8%E9%87%8F%E5%87%BD%E6%95%B0​zh.wikipedia.org

1.伯努利分布

又名两点分布或者0-1分布,是一个伯努利试验成功,则伯努利随机变量取值为1。若伯努利试验失败,则伯努利随机变量取值为0。

参考:https://zh.wikipedia.org/wiki/%E4%BC%AF%E5%8A%AA%E5%88%A9%E5%88%86%E5%B8%83​zh.wikipedia.org

2.二项分布

是n个独立的是/非试验中成功的次数的离散概率分布,其中每次试验的成功概率为p。这样的单次成功/失败试验又称为伯努利试验。实际上,当n= 1时,二项分布就是伯努利分布。二项分布是显著性差异的二项试验的基础。

参考:https://zh.wikipedia.org/wiki/%E4%BA%8C%E9%A0%85%E5%88%86%E4%BD%88​zh.wikipedia.org

3.几何分布

在概率论和几何分布(英语:Geometric distribution)指的是以下两种离散型概率分布中的一种:在伯努利试验中,得到一次成功所需要的试验次数X。X的值域是{ 1, 2, 3, ... }

在得到第一次成功之前所经历的失败次数Y = X − 1。Y的值域是{ 0, 1, 2, 3, ... }

参考:https://zh.wikipedia.org/wiki/%E5%B9%BE%E4%BD%95%E5%88%86%E4%BD%88​zh.wikipedia.org

4.泊松分布

泊松分布适合于描述单位时间内随机事件发生的次数的概率分布。如某一服务设施在一定时间内受到的服务请求的次数,电话交换机接到呼叫的次数、汽车站台的候客人数、机器出现的故障数、自然灾害发生的次数、DNA序列的变异数、放射性原子核的衰变数、激光的光子数分布等等。

参考:https://zh.wikipedia.org/wiki/%E6%B3%8A%E6%9D%BE%E5%88%86%E4%BD%88​zh.wikipedia.org

5.正态分布

参考:https://zh.wikipedia.org/zh/正态分布​zh.wikipedia.org

(二)Python实现

1.伯努利分布

效果:

2.二项分布

效果:

3.几何分布

效果:

4.泊松分布

效果:

5.正态分布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
马尔可夫链是一种基于概率的模型,可以用于生成随机文本、图像、音频等。在Python中,我们可以使用一些库来实现马尔可夫链。 第一步是收集文本数据的样本,我们可以使用`requests`库从网站上获取文本,或者从文件中读取文本。 ```python import requests text = requests.get('http://example.com').text ``` 或者 ```python with open('file.txt', 'r') as f: text = f.read() ``` 接下来,我们需要将文本拆分成单个词语或字符,并创建一个词语或字符列表。 ```python words = text.split() ``` 或者 ```python chars = list(text) ``` 然后,我们需要创建一个字典,将每个单词或字符作为键,将其后面的单词或字符作为值,并将它们的出现次数记录在一个计数器中。 ```python def create_dict(data): d = {} for i in range(len(data)-1): if data[i] not in d: d[data[i]] = {data[i+1]: 1} else: if data[i+1] not in d[data[i]]: d[data[i]][data[i+1]] = 1 else: d[data[i]][data[i+1]] += 1 return d word_dict = create_dict(words) ``` 或者 ```python char_dict = create_dict(chars) ``` 现在我们已经创建了一个字典,我们可以使用它来生成新的文本。我们从随机的单词或字符开始,然后根据每个单词或字符的概率选择下一个单词或字符,并将其添加到文本中。 ```python import random def generate_text(data, n): current_word = random.choice(list(data.keys())) result = current_word for i in range(n-1): if current_word in data: next_word = random.choices(list(data[current_word].keys()), weights=list(data[current_word].values()))[0] result += ' ' + next_word current_word = next_word else: current_word = random.choice(list(data.keys())) result += '\n' + current_word return result new_text = generate_text(word_dict, 100) print(new_text) ``` 或者 ```python new_text = generate_text(char_dict, 100) print(new_text) ``` 这就是使用Python实现马尔可夫链的基本步骤。你可以使用不同的数据集,并尝试调整概率权重来生成不同的文本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值