Probability 如何生成具有固定非均匀分布的多个不重复随机变量?

Probability 如何生成具有固定非均匀分布的多个不重复随机变量?,probability,random-sample,Probability,Random Sample,所以对于一个给定的离散分布,比如(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.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

这与给定的分布相同


有没有想法建造一个发电机来实现这一点?谢谢:)

如果你把这个问题看成一组线性方程,你就可以用矩阵方程来表示。例如:

|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
p23=0.6

如果您将问题视为一组线性方程,您将能够使用矩阵方程来表示它。例如:

|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
p23=0.6

谢谢!但是如果我们有n个变量,我们选择了一组m个变量呢?当然,我们可以用线性方程组来解它。然而,如果n和m相对较大,那么这样做可能没有效率。我想知道是否有一个随机发生器可以生成这些具有给定边际分布的群体,我清楚吗?谢谢你所说的问题,它相当于解一个线性方程组。所以解决它和解决系统是一样的。然而,请注意,“我的”解决方案是通用的,因为它适用于
(p12+p13+…+p1n)/(n-1)=p1
,等等的一般情况。谢谢!所以我知道从n个变量中选择m个变量的组,我们可以尝试求解线性系统,精确地知道每个组的概率,然后通过某种生成方法生成它。e、 在我的例子中,一旦我知道p12、p13和p23,我就可以用这个概率生成12、13或23。(续),而我不知道是否有办法在不知道确切概率的情况下生成12、13或23。我试着依次生成它们,比如通过边缘分布生成第一个变量,然后根据第一个变量的分布生成下一个变量,但是它不起作用,因为它给出了一个总体上有偏见的结果…@XiHe我在回答中描述的方法解决了你发布的问题,并且更一般(见我上面的评论)。如果你的问题不同或更难,你应该编辑问题并重新表述。谢谢!但是如果我们有n个变量,我们选择了一组m个变量呢?当然,我们可以用线性方程组来解它。然而,如果n和m相对较大,那么这样做可能没有效率。我想知道是否有一个随机发生器可以生成这些具有给定边际分布的群体,我清楚吗?谢谢你所说的问题,它相当于解一个线性方程组。所以解决它和解决系统是一样的。然而,请注意,“我的”解决方案是通用的,因为它适用于
(p12+p13+…+p1n)/(n-1)=p1
,等等的一般情况。谢谢!所以我知道从n个变量中选择m个变量的组,我们可以尝试求解线性系统,精确地知道每个组的概率,然后通过某种生成方法生成它。e、 在我的例子中,一旦我知道p12、p13和p23,我就可以用这个概率生成12、13或23。(续),而我不知道是否有办法在不知道确切概率的情况下生成12、13或23。我试着依次生成它们,比如通过边缘分布生成第一个变量,然后根据第一个变量的分布生成下一个变量,但是它不起作用,因为它给出了一个总体上有偏差的结果…@XiHe我在回答中描述的方法解决了你发布的问题,并且更一般(见我上面的评论)。如果你的问题不同或更难,你应该编辑问题并重新表述。