如何用R语言生成10个0至1之间随机数且要求他们的和为1?

2025-04-08 03:02:25
推荐回答(1个)
回答1:

x<-runif(10,min=0,max=1); #生成10个0到1的均匀分布

x<-x/sum(x); #每个随机数除以这十个数的总和
这样得到的10个随机数的和就是1了。
这里为了方便最初采用了0到1的均匀分布,实际上你可以采用任意的分布,只要将得到的十个数先平移至均为正数,再除以总和,就得到10个和为1的随机数。
当然,这10个数具体是什么分布就不讨论了。