1. r语言产生随机数命令和参数的调用
产生随机数的命令很多,要看你具体问题了。
一般都是以r开关的,比如runif用于产生均匀随机数
2. 怎么用R语言生成0-1之间的随机数?
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()函数,如下图所示:
3. R语言生成随机数问题
一般地,如果你已知一个连续随机变量X的cdf F_X(x)(=P(X<=x))的话,那么F^(-1)(U)(F^(-1)为F的反函数)就符合这个分布(U为(0,1)上的均匀分布),反之亦然。证明很简单,就是直接套定义。
所以你可以写出来F^(-1)这个函数(比如说自定义函数名为FInverse),然后生成随机数组:
randomSequence<-FInverse(runif(n))
对于指数分布来说,
FInverse<-function(p,lambda=1){
-log(1-p)/lambda
}
离散随机变量类似吧。。。
当然,前提是你能写出来F^(-1)。。。(所以我老师说这个方法没啥用。。。)有的分布不好写F^(-1),但是有一些比较巧妙的办法(比如正态分布),这种应该就只能具体问题具体分析了。
4. 求教:用R语言如何从一个数字列表中从某随机数开始往
假如你的向量是x
# 找出向量的长度n
> n <- length(x)
# 从1到n-5 中随机选一个数
> ind <- sample(n-4, 1)
# 最后找出连续5个
> result <- x[ind + 0:4]
5. 用R语言编写,编写程序分别产生100个均值为0标准差为1的正态分布随机数,
产生100个均值为0标准差为1的正态分布随机数:rnorm(100, mean = 0, sd = 1)
指数分布数 dnorm(x, mean = 5, sd = 1, log = TRUE)
6. 求教:用R语言如何从一个数字列表中从某随机数开始往后列5个数字,并形成列表?
假如你的向量是x
# 找出向量的长度n
> n <- length(x)
# 从1到n-5 中随机选一个数
> ind <- sample(n-4, 1)
# 最后找出连续5个
> result <- x[ind + 0:4]
7. R语言中,生成10000个标准正态分布的随机数,分别计算大于1.96,小于-1.96和-1.96到1.96之间的数各有多少个.
n<-1.96 这是R的bug,你想数n小于-1.96的个数, 但此时R会认为你把1.96赋值给n
这块你要用length(n[n<(-1.96)])
length(n[abs(n)>1.96]) 这个是没问题的,但是你前一步已经让n=1.96了,所以这里只能是0
8. 如何用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个数具体是什么分布就不讨论了。