我想计算二项式分布给出的预定x(成功),n(试验)和p(概率)的概率 - 后者由概率质量函数Beta(a,b)给出.
我知道scipy.stats.binom.pmf(x,n,p)- 但我不确定如何用概率函数替换p.我也想知道我是否可以使用loc参数 scipy.stats.binom.pmf来模拟这种行为.
我有一个整数需要根据概率分布分成二进制位.例如,如果我有N=100对象进入[0.02, 0.08, 0.16, 0.29, 0.45]那么你可能会得到[1, 10, 20, 25, 44].
import numpy as np
# sample distribution
d = np.array([x ** 2 for x in range(1,6)], dtype=float)
d = d / d.sum()
dcs = d.cumsum()
bins = np.zeros(d.shape)
N = 100
for roll in np.random.rand(N):
# grab the first index that the roll satisfies
i = np.where(roll < dcs)[0][0]
bins[i] += 1
Run Code Online (Sandbox Code Playgroud)
实际上,N和我的箱数非常大,因此循环并不是一个可行的选择.有什么方法可以将此操作进行矢量化以加快速度吗?
我正在尝试解决Project Euler中的第280个问题,为此我编写了以下模拟;
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
/* Directions
1
2 3
4
*/
int grid[5][5] = {
{0, 0, 0, 0, 2},
{0, 0, 0, 0, 2},
{0, 0, 0, 0, 2},
{0, 0, 0, 0, 2},
{0, 0, 0, 0, 2}
};
int InitPos[2] = {2, 2};
int MaxExp = 5000000;
bool Success = false;
int StepCount = 0;
int ExpNumber = 1;
int AntsBag = 0;
void Init();
void CarryFood(int * pos); …Run Code Online (Sandbox Code Playgroud) random performance probability probability-density probability-distribution
我想在python(using numpy)中实现一个函数,它接受一个数学函数(p(x) = e^(-x)例如下面的例子)作为输入并生成随机数,这些随机数根据数学函数的概率分布进行分配.我需要绘制它们,所以我们可以看到分布.
实际上我需要一个随机数生成器函数来完成以下两个数学函数作为输入,但如果它可以采取其他函数,为什么不:
1)p(x) = e^(-x)
2)g(x) = (1/sqrt(2*pi)) * e^(-(x^2)/2)
有没有人知道如何在python中这样做?
python numpy probability probability-density probability-distribution
我正在尝试使用R的本机plot命令获得与此图相似的图。

我可以使用下面的代码得到类似的结果,但是,我希望密度多边形重叠。有人可以建议一种方法吗?
data = lapply(1:5, function(x) density(rnorm(100, mean = x)))
par(mfrow=c(5,1))
for(i in 1:length(data)){
plot(data[[i]], xaxt='n', yaxt='n', main='', xlim=c(-2, 8), xlab='', ylab='', bty='n', lwd=1)
polygon(data[[i]], col=rgb(0,0,0,.4), border=NA)
abline(h=0, lwd=0.5)
}
Run Code Online (Sandbox Code Playgroud)
输出:

我想生成一个整数随机数,其概率分布函数作为列表给出。例如,如果 pdf=[3,2,1] 那么我喜欢 rndWDist(pdf) 返回 0,1 和 2,概率为 3/6、2/6 和 1/6。我为此编写了自己的函数,因为我在 random 模块中找不到它。
def randintWDist(pdf):
cdf=[]
for x in pdf:
if cdf:
cdf.append(cdf[-1]+x)
else:
cdf.append(x)
a=random.randint(1,cdf[-1])
i=0
while cdf[i]<a:
i=i+1
return i
Run Code Online (Sandbox Code Playgroud)
有没有更短的方法来达到相同的结果?
我很难构建一个有效的程序,该程序可以添加和乘以概率密度函数来预测完成两个流程步骤所需的时间分布。
让“a”代表完成过程“A”所需时间的概率分布函数。零天 = 10%,一天 = 40%,两天 = 50%。让“b”代表完成过程“B”需要多长时间的概率分布函数。零天 = 10%,一天 = 20%,以此类推。
进程“B”在进程“A”完成之前无法启动,因此“B”依赖于“A”。
a <- c(.1, .4, .5)
b <- c(.1,.2,.3,.3,.1)
Run Code Online (Sandbox Code Playgroud)
如何计算完成“A”和“B”的时间的概率密度函数?
这是我所期望的或以下示例的输出:
totallength <- 0 # initialize
totallength[1:(length(a) + length(b))] <- 0 # initialize
totallength[1] <- a[1]*b[1]
totallength[2] <- a[1]*b[2] + a[2]*b[1]
totallength[3] <- a[1]*b[3] + a[2]*b[2] + a[3]*b[1]
totallength[4] <- a[1]*b[4] + a[2]*b[3] + a[3]*b[2]
totallength[5] <- a[1]*b[5] + a[2]*b[4] + a[3]*b[3]
totallength[6] <- a[2]*b[5] + a[3]*b[4]
totallength[7] <- a[3]*b[5]
print(totallength)
[1] [1] 0.01 0.06 0.16 0.25 0.28 …Run Code Online (Sandbox Code Playgroud) 我需要在下面重现归一化密度 p(x),但给出的代码不会生成归一化 PDF。
clc, clear
% Create three distribution objects with different parameters
pd1 = makedist('Uniform','lower',2,'upper',6);
pd2 = makedist('Uniform','lower',2,'upper',4);
pd3 = makedist('Uniform','lower',5,'upper',6);
% Compute the pdfs
x = -1:.01:9;
pdf1 = pdf(pd1,x);
pdf2 = pdf(pd2,x);
pdf3 = pdf(pd3,x);
% Sum of uniforms
pdf = (pdf1 + pdf2 + pdf3);
% Plot the pdfs
figure;
stairs(x,pdf,'r','LineWidth',2);
Run Code Online (Sandbox Code Playgroud)
如果我通过简单地按它们的总和缩放它们来计算归一化混合 PDF,与上面的原始图相比,我有不同的归一化概率。
pdf = pdf/sum(pdf);
Run Code Online (Sandbox Code Playgroud) matlab distribution probability-density uniform-distribution mixture
我正在生成一个对象网格,每个对象都有 3 种颜色之一。假设我正在填充一个特定的网格单元。我知道这个单元格周围有 1 个 color 对象0、1 个 color 对象1和 2 个 color 对象2,所以:
const surroundings = { 0: 1, 1: 1, 2: 2 }
Run Code Online (Sandbox Code Playgroud)
现在我想为我正在使用的当前单元格分配一种颜色。我需要计算每种颜色的使用概率。为了让它看起来令人愉悦,我希望它更有可能与周围环境有所不同。因此,在上述情况下,概率可能是{ 0: 0.4, 1: 0.4, 2: 0.2 }。
我确信概率论中存在这种操作的实现,但我很难找到它的正确术语。在我给出的例子中,概率可能不同,因为我不知道如何计算它们。但对于颜色0和1它们当然应该相等,对于颜色来说,2它们应该是最小的。
javascript probability probability-theory probability-density
基本上,我使用平均值和标准差值绘制了一条正态曲线。y 轴给出概率密度。
如何找到 x 轴上某个值“x”的概率?有没有相关的 Python 函数或者如何编码?
python statistics probability probability-density probability-distribution
python ×5
probability ×4
random ×3
distribution ×2
numpy ×2
r ×2
statistics ×2
binomial-cdf ×1
density-plot ×1
javascript ×1
matlab ×1
mixture ×1
performance ×1
plot ×1