Artificial intelligence 生成非均匀随机数

Artificial intelligence 生成非均匀随机数,artificial-intelligence,random,Artificial Intelligence,Random,你能告诉我生成非均匀随机数的方法吗? 我使用的是Java,但是代码示例可以是您想要的任何形式 一种方法是通过将两个均匀的随机数相加(即掷2个骰子)来创建一个扭曲分布。尝试生成均匀分布的随机数,然后对每个随机数应用反向非均匀分布。您希望偏差的分布是什么 这里有一种技术总是有效的,但并不总是最有效的。累积分布函数P(x)给出了数值低于x的时间分数。因此,在x的最低可能值时,P(x)=0,在x的最高可能值时,P(x)=1。每个发行版都有一个唯一的CDF,它以P(x)从0上升到1的方式对发行版的所有属性

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


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

尝试生成均匀分布的随机数,然后对每个随机数应用反向非均匀分布。

您希望偏差的分布是什么

这里有一种技术总是有效的,但并不总是最有效的。累积分布函数P(x)给出了数值低于x的时间分数。因此,在x的最低可能值时,P(x)=0,在x的最高可能值时,P(x)=1。每个发行版都有一个唯一的CDF,它以P(x)从0上升到1的方式对发行版的所有属性进行编码。如果y是区间[0,1]上的均匀偏差,那么满足P(x)=y的x将根据您的分布进行分布。为了使这项工作更全面,您只需要一种计算分布的P(x)的倒数的方法

该库定义了大量常用的分布(如正态分布、对数正态分布、指数分布、卡方分布等),并具有计算每个分布的CDF(分布.左概率)和逆CDF(分布.逆概率)的函数


对于特定发行版来说,专门的技术是快速的,例如,正态分布偏差的Box-Muller技术,请参阅《数值计算》一书。

如果您使用的是Java,那么我的库可能会很有趣。它包括为均匀分布、高斯分布、泊松分布、二项式分布和指数分布生成随机数的类。显示如何使用这些分布。

这取决于所需的分布。错误,必须反转分布函数。如果你想要平方分布,你必须取随机数的平方根。我假设分布函数应用适当的反演。我认为您的问题更多的是关于所使用函数的分发类型的术语。是的,但是术语很重要。你违反了标准。@subtenant:编辑以反映你建议的更改。我只是澄清了答案,强调你要应用的是反向CDF(不是PDF或其他任何形式)。没关系,我只是在寻找跨不同发行版生成数字的方法。我想我没想那么多。听起来我需要多读点书,这就是你刚才说的那本书吗?数字食谱第三版:科学计算的艺术是的,这是本书。这是数值计算的标准入门,但这是一项巨大的金钱和精力投资。如果你只是想要那些该死的变态,我会选择图书馆。使用我提到的方法,它非常简单:Random rng=new Random(1);分布距离=新正态分布(1.0,2.0);double x=距离倒数概率(rng.NextDouble());太棒了,这肯定是我想做得更好的事情。我确实打算借这本书。非常感谢你。