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

Python025

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

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

x<-x/sum(x)#每个随机数除以这十个数的总和

这样得到的10个随机数的和就是1了。

这里为了方便最初采用了0到1的均匀分布,实际上你可以采用任意的分布,只要将得到的十个数先平移至均为正数,再除以总和,就得到10个和为1的随机数。

当然,这10个数具体是什么分布就不讨论了。

1、第一步,调用runif()函数,这时函数内的值为6,生成6个随机数,如下图所示

2、第二步,再次调用runif()函数,runif(6)又生成6个随机数,如下图所示:

3、第三步,使用set.seed(12345)设置种子元素,然后调用runif(6),查看数据情况,如下图所示:

4、第四步,再次调用set.seed()函数,这时多加了一个6,如下图所示:

5、第五步,再次调用runif(6)函数,查看生成的6个随机数的不同,如下图所示:

6、第六步,再次调用set.seed()函数,这时是从1到9;然后调用runif()函数,如下图所示: