c# - 绘制直方图的源码说明
问题描述
在此链接中,以下源代码用于动态创建直方图:
private void GaussianDistributionDemo()
{
//... ...
for (var i = 0; i < n_bins * 10000; i++)
{
var g = r.NextGaussian(mu, sigma);
// Below code is for generating the histogram on the fly
var z = (g - mu) / sigma;
if (z > 3 || z < -3) continue;
var b = (int)((z + 3) * n_bins / 6d);
bins[b]++;
}
//... ... ...
}
有人可以向我解释这个计算吗?
- 是什么
z
? - 为什么
if (z > 3 || z < -3)
检查相关? - 是什么
(z + 3) * n_bins / 6d
意思?3 和 6d 是从哪里来的?
解决方案
在不详细浏览您提供的链接的情况下,这是我试图回答您的具体问题的尝试
什么是z?
z
是来自标准正态分布的样本。 标准正态分布为什么 if (z > 3 || z < -3) 检查相关?
可能在代码中,他们只对 [-3,3] 范围内的值感兴趣
(z + 3) * n_bins / 6d 是什么意思?3 和 6d 是从哪里来的?
(z + 3) * n_bins / 6d
帮助确定当前样本所属的 bin 并将 bin 的计数加一。再一次,假设您只对范围 [-3,3] 中的值感兴趣,通过将 3 添加到 z,您可以将值转换为范围 [0,6]。现在通过除以 6,将其转换为 [0,1] 并乘以 n_bins,并将其转换为整数,您将获得该数字所属的 bin 的索引
基本上,代码中的 for 循环从高斯分布中采样 10,000 个值,并且对于每个样本,如果它在 [-3,3] 范围内,则识别它所属的直方图的 bin,并增加 bin 的计数由 1。
n_bins
是在绘制直方图时要将范围 -3 到 3 划分为的 bin 数
推荐阅读
- time-complexity - O(1) 摊销 + O(k) = O(k) 摊销?
- angular - 使用 swichMap 运算符进行角度嵌套订阅时出错
- java - 一个 gRPC 服务器可以运行多个相同的服务类吗?
- amazon-web-services - NextJS 在 AWS Elasticbeanstalk 上返回 502 错误
- python - 使用条件步骤创建 numpy 数组
- php - 我无法打开解密的 Amazon Selling Partner Feed 文档
- python - 使用预签名 url boto3 调用 create_presigned_post() 上传时 S3 文件访问被拒绝
- amazon-web-services - 用于创建资源的 AWS cloudformation 条件
- html - 是否可以使用纯 CSS 为仅包含一项的列表与包含多项的列表设置样式?
- laravel - 如何使用 laravel 显示未在 jquery 中选择的选择选项