我有一个随机变量的概率分布,我如何根据这个分布生成一组随机的 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 定义要采样的元素数。