首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Pharo中对概率分布进行采样

如何在Pharo中对概率分布进行采样
EN

Stack Overflow用户
提问于 2020-06-25 22:52:40
回答 1查看 62关注 0票数 3

我想生成n个不同概率分布(正态、对数正态、泊松、均匀)的随机样本。即R中的是rnormrlnormrpoisrunif

我如何在Pharo中做到这一点?知道如何计算密度(dnormdlnormdpoisdunif)也很有用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-27 20:12:35

好的,我在这里给出一个答案,推荐使用PolyMath。

要加载PolyMath执行,请执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
Metacello new
        repository: 'github://PolyMathOrg/PolyMath/src';
        baseline: 'PolyMath';
        load

似乎存在两种不同类型的对象: PMProbabilityDensity和PMNumberGenerator,它们都有各自的子类。可以使用密度对象获取密度并生成随机采样,也可以使用数字生成器生成随机采样。

因此,对于正态分布,如果使用密度对象,可以使用以下方法进行采样:

代码语言:javascript
运行
AI代码解释
复制
PMNormalDistribution new random "N(0,1)"
PMNormalDistribution new initialize: mu sigma: sigma; random

或使用以下命令获取x点的密度:

代码语言:javascript
运行
AI代码解释
复制
PMNormalDistribution new initialize: 0 sigma: 1; value: x.

完全相同的模式适用于log normal和uniform:

代码语言:javascript
运行
AI代码解释
复制
PMUniformDistribution new initialize: from to: to; random
PMUniformDistribution new initialize: from to: to; value: x

PMLogNormalDistribution new initialize: mu sigma: sigma
PMLogNormalDistribution new initialize: mu sigma: sigma; value: x

不幸的是,我找不到泊松的密度对象。现在,你仍然可以生成它的样本:使用数字生成器对象,你可以生成泊松和法线样本(以及间接的对数法线):

代码语言:javascript
运行
AI代码解释
复制
PMPoissonGenerator new lambda: lambda; next.

PMGaussianGenerator new next.
PMGaussianGenerator new standardDeviation: 2; mean: 5; next.
(PMGaussianGenerator new standardDeviation: 2; mean: 5; next) exp. "log normal"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62585471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档