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

如题所述

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

x<-x/sum(x); #每个随机数除以这十个数的总和
这样得到的10个随机数的和就是1了。
这里为了方便最初采用了0到1的均匀分布,实际上你可以采用任意的分布,只要将得到的十个数先平移至均为正数,再除以总和,就得到10个和为1的随机数。
当然,这10个数具体是什么分布就不讨论了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-28
这不可能。你要求X1+...+X10=1 每个X都是独立同分布于(0,1)均匀分布
如果你学过概率论就知道要求连续型随机变量等于一个固定的数的概率是0,也就是
P(X1+...+X10=1)=0,也就是只有随机无限次才有可能达到这个要求。
第2个回答  2016-10-18
用dirichlet 分布可以直接生成
第3个回答  2021-10-18
生成9个然后,1-9个数的和,是最后一个~
相似回答