标签: normal-distribution

将浮点精度添加到qnorm/pnorm?

我有兴趣在计算qnorm/ pnorm从当前级别时增加浮点限制,例如:

x <- pnorm(10) # 1
qnorm(x) # Inf
qnorm(.9999999999999999444) # The highst limit I've found that still return a <<Inf number
Run Code Online (Sandbox Code Playgroud)

这是(在合理的时间内)可能吗?如果是这样,怎么样?

floating-point precision r normal-distribution

6
推荐指数
1
解决办法
1490
查看次数

替代scipy.stats.norm.pdf?

有没有人知道scipy.stats.norm.pdf()的替代品?我在Google App Engine上托管我的python网站,Google不支持SciPy.

我尝试过这个函数,但是没有返回与scipy相同的结果:

def normpdf(x, mu, sigma):
    u = (x-mu)/abs(sigma)
    y = (1/(sqrt(2*pi)*abs(sigma)))*exp(-u*u/2)
    return y
Run Code Online (Sandbox Code Playgroud)

例如:

print scipy.stats.norm.pdf(20, 20, 10)
print normpdf(20, 20, 10)

print scipy.stats.norm.pdf(15, 20, 10)
print normpdf(15, 20, 10)

print scipy.stats.norm.pdf(10, 20, 10)
print normpdf(10, 20, 10)
Run Code Online (Sandbox Code Playgroud)

返回以下值:

0.0398942280401
0.0398942280401

0.0352065326764
0.0146762663174

0.0241970724519
0.0146762663174
Run Code Online (Sandbox Code Playgroud)

python math normal-distribution scipy

6
推荐指数
2
解决办法
2万
查看次数

如何从Haskell中的复杂或复合分布中进行采样?

我正在尝试为Haskell中的假想行星生成随机质量.我想通过采样双模态分布(理想情况下是两个正态分布的叠加:一个对应于小行星,一个对应于气体巨行)来产生这些质量.我查看了统计软件包,它提供了quantile函数,可以将统一分布Double转换Double为多个分布.但似乎没有任何支持撰写发行版.

这个特殊情况可以通过选择一个分布或另一个分类来进行预测,但是我想用一个分发来做,特别是因为我可能需要稍后调整整体分布.最终,我可能会用天空测量中的真实数据替换正态分布.

我正在考虑自己实施拒绝抽样,它可以相当简单地处理任意分布,但它似乎效率很低,如果解决方案已经作为库存在,那么实现它肯定不是一个好主意.

是否有一个Haskell库支持从组合或显式指定的分发中进行采样?或者现有的Haskell实现拒绝采样?或者,是否存在两个正态分布之和的CDF逆的显式公式?

statistics haskell normal-distribution procedural-generation sampling

6
推荐指数
1
解决办法
1557
查看次数

Perlin噪音百分比

我正在编写一个基于perlin噪声的地图生成器,并遇到了一个问题:

让我们说我想要30%的水和70%的污垢瓷砖.使用通常的随机生成器没有问题:

tile = rnd.nextFloat() < 0.7f ? DIRT : WATER;
Run Code Online (Sandbox Code Playgroud)

但是perlin噪声是正态分布的(范围从-1到1,意思是0)所以它并不那么容易.

有没有人知道将法线转换为均匀分布的方法或不同的方法我可以从噪声值中获得百分比?

编辑:70%只是一个例子,我希望能够动态使用任何值,最多只有0.1%的精度.

编辑2:我想将perlin噪声转换为均匀分布,而不是正常(它已经是相似的).

java normal-distribution perlin-noise

6
推荐指数
3
解决办法
1528
查看次数

Boost BCP不输出任何文件?

我正在尝试使用Boost Copy(BCP)实用程序将normal_distribution类从Boost中拉出来.但是,当我这样做时bcp normal_distribution ./my_normal_distribution_dir,my_normal_distribution_dir目录中没有任何内容.

以下是我正在做的有关环境的更详细背景:

在Mac OS 10.7上,我下载了Boost 1.50和未修改的源文件.在顶级Boost目录中,我做到了./bootstrap.sh.然后,我做了./bjam ./tools/bcp,它在./dist/bin目录中生成了一个bcp可执行文件.我创建了一个名为my_normal_distribution_dir的目录.然后,我尝试了以下命令来提取normal_distribution类:

./dist/bin/bcp normal_distribution ./my_normal_distribution_dir
./dist/bin/bcp --list normal_distribution --boost=./ ./my_normal_distribution_dir 
./dist/bin/bcp --list normal_distribution --boost=./ output-path:./my_normal_distribution_dir
Run Code Online (Sandbox Code Playgroud)

我也尝试使用my_normal_distribution_dir的绝对路径.

所有这些都给出了以下输出:

no errors detected
Run Code Online (Sandbox Code Playgroud)

但是,在尝试了所有这些之后,my_normal_distribution_dir目录仍然是空的!我该怎么办?

此外,由于这个线程建议BCP.一旦我们解决了上述问题,BCP就应该完美地处理我的用例.

c++ boost bcp normal-distribution

6
推荐指数
1
解决办法
488
查看次数

C++ - 生成遵循范围内正态分布的随机数

我需要生成遵循正态分布的随机数,该随机数应位于 1000 和 11000 的区间内,平均值为 7000。我想使用c++11 库函数,但我不明白如何生成间隔。有人可以帮忙吗?

c++ random normal-distribution c++11

6
推荐指数
1
解决办法
1万
查看次数

在 Java 中生成遵循正态分布的数字

我想(随机)生成数字,使数字遵循给定均值和方差的正态分布。我怎样才能实现这个目标?

如果能在Java的上下文中给出这个就更好了。人们可能会在这些答案中寻求帮助:但它们并不精确。 在 C/C++ 中生成遵循正态分布的随机数

java random algorithm normal-distribution

6
推荐指数
1
解决办法
1万
查看次数

多元正态分布Matlab,概率区域

我有2个数组:一个有x坐标,另一个有y坐标.由于蒙特卡罗模拟,两者都是正态分布.我知道如何找到两个阵列的sigma和mu,并获得95%的置信区间:

[mu,sigma]=normfit(x_array);
hist(x_array);
x=norminv([0.025 0.975],mu,sigma)
Run Code Online (Sandbox Code Playgroud)

但是,两个阵列都是相互关联的.为了绘制组合阵列的概率分布,我使用多元正态分布.在MATLAB中,这给了我:

[MuX,SigmaX]=normfit(x_array);
[MuY,SigmaY]=normfit(y_array);
mu = [MuX MuY];
Sigma=cov(x_array,y_array);
x1 = MuX-4*SigmaX:5:MuX+4*SigmaX; x2 = MuY-4*SigmaY:5:MuY+4*SigmaY;
[X1,X2] = meshgrid(x1,x2);
F = mvnpdf([X1(:) X2(:)],mu,Sigma);
F = reshape(F,length(x2),length(x1));
surf(x1,x2,F);
caxis([min(F(:))-.5*range(F(:)),max(F(:))]);
set(gca,'Ydir','reverse')
xlabel('x0-as'); ylabel('y0-as'); zlabel('Probability Density');
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

到现在为止还挺好.现在我想计算95%的概率区域.我正在寻找一个功能mndinv,就像norminv.然而,MATLAB中不存在这样的功能,这是有道理的,因为有无穷无尽的可能性......有人有关于如何获得95%概率区域的提示吗?提前致谢.

matlab normal-distribution

6
推荐指数
1
解决办法
1442
查看次数

如何以每个带/箱中的数据百分比作为标签绘制正态分布?

在绘制数据的正态分布图时,我们如何使用 matplotlib/seaborn 或plotly 为每个箱中的数据百分比添加如下图所示的标签,其中每个波段的宽度为 1 个标准差?

在此输入图像描述

目前,我正在绘制这样的图:

hmean = np.mean(data)
hstd = np.std(data)
pdf = stats.norm.pdf(data, hmean, hstd)
plt.plot(data, pdf)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python statistics normal-distribution matplotlib plotly

6
推荐指数
1
解决办法
8198
查看次数

如何在pytorch中制作截断正态分布?

我想在 PyTorch 中创建截断正态分布(即具有范围的高斯分布)。
我希望能够更改平均值、标准差和范围。
有 PyTorch 方法吗?

normal-distribution pytorch

6
推荐指数
1
解决办法
6507
查看次数