gpt4 book ai didi

c++ - 如何创建包含(人工生成的)高斯(正态)分布的 vector ?

转载 作者:太空狗 更新时间:2023-10-29 23:36:58 28 4
gpt4 key购买 nike

如果我有数据(每日股票图表是一个很好的例子,但它可以是任何东西),其中我只知道 X 单位销售的范围(高 - 低)但我不知道确切的价格出售的任何给定元素。为简单起见,假设价格范围包含足够的桶(例如,40 美分的范围内有 41 美分的增量)以使这种分布切实可行。我如何着手分配这些项目以形成存储在 vector 中的正常钟形曲线?它不一定要完美,但要切合实际。

我(非常)幼稚的想法是假设既然随机数应该形成正态分布,我可以做一些事情,比如有一个二进制 RNG。例如,如果有四十个桶,那么如果“0”出现 40 次,则第 0 个桶递增,如果“1”连续出现多次,则第 39 个桶递增。如果“1”出现 20 次,则它位于 vector 的中间。对每个项目执行此操作,直到 X 个单位被计算在内。这可能是正确的,也可能不是正确的,而且在任何情况下似乎都比必要的效率低得多。我正在寻找更明智的东西。

这不是家庭作业,只是一个困扰我的问题,我的统计数据不合格。大多数文献似乎都是关于分析已经存在的分布,但很少涉及如何人为地创建分布。

我想用 C++ 编写这个,所以用 R 或 Matlab 或诸如此类的东西预先打包的解决方案对我来说不太有用。

谢谢。我希望这是有道理的。

最佳答案

Most literature seems to be about analyzing the distribution after it already exists but not much about how to artificially create one.

有大量关于如何创建一个的文献。 Box-Muller 变换、Marsaglia 极坐标法(Box-Muller 的变体)和 Ziggurat 算法是三种。 (谷歌那些条款)。两种 Box-Muller 方法都易于实现。

更好的是,只需使用一个已经存在的随机生成器来实现这些算法之一。 boost 和新的 C++11 都有这样的包。

关于c++ - 如何创建包含(人工生成的)高斯(正态)分布的 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038408/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com