生成非均匀随机数

你能告诉我生成非均匀随机数的任何方法吗?
我正在使用 Java,但是代码示例可以用任何你想要的语言。

一种方法是通过将两个均匀随机数相加来创建倾斜的分布(即,掷 2 个骰子)。


回答:

你想要什么分布的离差?

这里有一种始终有效,但并非总是最有效的技术。 累积分布函数 P(x) 给出了值低于 x 的时间的比例。 因此,P(x) 在 x 的最低可能值处为 0,在 x 的最高可能值处为 1。 每个分布都有一个唯一的 CDF,它以 P(x) 从 0 上升到 1 的方式编码了分布的所有属性。 如果 y 是区间 [0,1] 上的均匀离差,那么满足 P(x)=y 的 x 将按照你的分布进行分布。 为了使这项工作在计算上可行,你只需要一种计算你的分布的 P(x) 的逆函数的方法。

Meta.Numerics 库定义了大量常用分布(例如,正态分布、对数正态分布、指数分布、卡方分布等),并且具有用于计算每个分布的 CDF (Distribution.LeftProbability) 和逆 CDF (Distribution.InverseLeftProbability) 的函数。

对于特定分布的快速专用技术,例如正态分布离差的 Box-Muller 技术,请参阅《数值食谱》一书。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注