生成非均匀随机数

Rob*_*ner 7 random artificial-intelligence

你能告诉我任何产生非均匀随机数的方法吗?
我正在使用Java,但代码示例可以是您想要的任何内容.

一种方法是通过将两个均匀随机数加在一起(即滚动2个骰子)来创建偏斜分布.

Pau*_*ier 10

尝试生成均匀分布的随机数,然后将反转的非均匀累积分布函数应用于每个随机数.

  • +1这是做到这一点的方法. (2认同)

小智 7

你想要什么样的偏差分布?

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

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

对于特定分布的快速专用技术,例如用于正态分布偏差的Box-Muller技术,请参阅"数字重建"一书.