www.fltk.net > 对于一组分布在(0,1)的随机数,用R语言求多少个数的和大于1

对于一组分布在(0,1)的随机数,用R语言求多少个数的和大于1

n<-1.96 这是R的bug,你想数n小于-1.96的个数, 但此时R会认为你把1.96赋值给n 这块你要用length(n[n1.96]) 这个是没问题的,但是你前一步已经让n=1.96了,所以这里只能是0

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

x 评论0 0 0

产生随机数有两个函数,他们是 runif(),rnorm() 举例:runif(10,min=0,max=1) #产生10个最小值为0,最大值为1的随机数 [1] 0.23848237 0.44347367 0.59288350 0.58668014 0.11930517 0.01078175 [7] 0.10631982 0.12381276 0.42652069 0.

在matlab中产生0-1上均匀分布的随机数方法如下:方法1、对于问题,如果Y是m*n的服从0~1均匀分布的随机矩阵:Y=rand(m,n);方法2、用统计工具箱,Y=unifrnd(0,1,m,n).另外,提供常用的函数分布供参考:1、均匀分布U(a,b)产生m*n阶[a,b]均

#include<stdio.h>#include<time.h>#include<stdlib.h>#define random(x,y) (rand()%(y-x+1)+x) //产生x~y的随机数 void main(){ srand((int)time(0)); for(int x=0;x<10;x++) printf("%d\t",random(100,200));}

double rand(double []r) { double base,u,p,v,temp1,temp2,temp3; base=256.0; u=17.0; v=139.0; temp1=u*(r[0])+v; //就算总数 temp2=(int)(temp1/base);//计算商 temp3=temp1-temp2*base;//余数 r[0]=temp3;//更新随机种子,为下一次使用 p=r[0]/base;//产生随机数 return p; }其中base为基数,一般去2的整数倍,常数,u、v可以随意取.数组r[]为只能去一个值的数组.如:double[]r={5.0}.

什么分布,这个很重要.一般是正态分布,那么就是 >numsummary(num) #描述性的结果 有最大值最小值中位数均值四分位点什么的

srand((int)time(0));这句话移出去,移到程序启动的位置(比如main函数的第一句话),只需执行一次

产生100个均值为0标准差为1的正态分布随机数:rnorm(100, mean = 0, sd = 1)指数分布数 dnorm(x, mean = 5, sd = 1, log = TRUE)

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com