我有一个随机变量的概率分布,我如何根据这个分布生成一组随机的 10 个数字?
I have the probability distribution of a random variable, how do I generate a random set of 10 numbers based on this distribution?
python中有答案:
他们似乎在使用一些内置的分布函数(即 exp)。我看过 R 中的随机生成器函数,比如 runif,但似乎我需要自己创建具有这种概率分布的函数,因为我拥有的概率分布不是标准的。
例如分布:
distribution = data.table(x = c(1,2,3,4,5,6,7,8,9,10), p = c(0.1,0.1,0.2,0.05,0.05,0.1,0.1,0.2,0.05,0.05))
> distribution
x p
1: 1 0.10
2: 2 0.10
3: 3 0.20
4: 4 0.05
5: 5 0.05
6: 6 0.10
7: 7 0.10
8: 8 0.20
9: 9 0.05
10: 10 0.05
我会这样做:
sample(distribution$x, size = n, replace = TRUE, prob = distribution$p)
其中 size = n 定义要采样的元素数。
python中有答案:
他们似乎在使用一些内置的分布函数(即 exp)。我看过 R 中的随机生成器函数,比如 runif,但似乎我需要自己创建具有这种概率分布的函数,因为我拥有的概率分布不是标准的。
例如分布:
distribution = data.table(x = c(1,2,3,4,5,6,7,8,9,10), p = c(0.1,0.1,0.2,0.05,0.05,0.1,0.1,0.2,0.05,0.05))
> distribution
x p
1: 1 0.10
2: 2 0.10
3: 3 0.20
4: 4 0.05
5: 5 0.05
6: 6 0.10
7: 7 0.10
8: 8 0.20
9: 9 0.05
10: 10 0.05
我会这样做:
sample(distribution$x, size = n, replace = TRUE, prob = distribution$p)
其中 size = n 定义要采样的元素数。