因此,对于给定的离散分布,比如说(0.2,0.4,0.4),生成一个跟随此分布的随机数很容易。
但是,从中生成多个未重复的随机数呢?
e.g。从分布(p1 = 0.2,p2 = 0.4,p3 = 0.4),如果我生成
(1,2),p12 = 0.2,
(2,3),p23 = 0.6,
(1,3),p13 = 0.2。
我能够获得
的边际分布p1 =(p12 + p13)/ 2 = 0.2,
p2 =(p23 + p12)/ 2 = 0.4,
p3 =(p13 + p23)/ 2 = 0.4。
与给定的分布相同。
是否有任何想法建立一个发电机来实现这一目标?感谢:)
答案 0 :(得分:0)
如果将问题看作一组线性方程式,您将能够使用矩阵方程表达它。例如:
didAppendToDocument()
现在你可以将矩阵反转得到:
|1/2 1/2 0 | |p12| |p1|
|1/2 0 1/2| * |p13| = |p2|
| 0 1/2 1/2| |p23| |p3|
在您的示例中,这将产生:
|p12| | 1 1 -1| |p1|
|p13| = | 1 -1 1| * |p2|
|p23| |-1 1 1| |p3|
所以,|p12| | 1 1 -1| |0.2| |0.2|
|p13| = | 1 -1 1| * |0.4| = |0.2|
|p23| |-1 1 1| |0.4| |0.6|
和p12 = p13 = 0.2
。