我是C的新手,并且极为惊讶于缺乏可访问的常见概率操作工具(即Boost和标准库中缺少的东西).我用其他语言做了很多科学编程,但标准和/或普遍存在的第三方附加组件总是包含各种概率工具.一位朋友称Boost是C的等效无处不在的附加组件,但是当我阅读Boost文档时,即使它似乎缺乏我认为非常基本的内置插件.
我找不到内置的,它采用某种离散概率数组,并根据这些概率产生一个索引.我当然可以为此编写自己的函数,但我只是想检查一下是否缺少标准的方法来执行此操作.
我觉得,必须在如此低级别编写我自己的函数是一件坏事,但我正在为一个更大的项目编写一个新的模拟模块.我通常的首选策略是用Python编写它并将Python链接到C,但是因为其他几个人在完成它之后将不得不管理这些代码,并且他们都不知道Python,我认为它会更谨慎的是在C中将它交付给他们.
更一般地说,人们在C中做什么样的事情,例如从标准分布中抽样,特别是像多变量正态分布那样基本的东西?
解决方法:
(从评论中移开.)
你看过Boost.Math.StatisticalDistributions吗?具体来说,它的Discrete Probability Distributions?
Boost不是一个库,它是一个库的集合,因此有时很难找到你正在寻找的东西 – 但这并不意味着它不存在. ; – ]