R学习之统计实验(八)--统计次数概率问题(R语言编程)-----数模

17 篇文章 11 订阅

问题

从1~10随机有放回选7个数,求10恰好出现2次的概率.分别作理论和模拟分析

直接R模拟(大数定律)

doubleten<-function(n){
  m<-0
  for (i in 1:n) {
    u<-runif(7)
    x<-floor(u*10)+1
    if(sum(x==10)==2){m=m+1}
  }
 rt<-c('两个10的概率'=m/n);rt
}
doubleten(10000)

其中函数说明

sum
是不是很奇怪为什么这里sum实现了统计某个值个数的操作!!!!
下面是官网文档,没有显示特别的关于统计某个值个数的操作。

Description

sum returns the sum of all the values present in its arguments.

Usage

sum(…, na.rm = FALSE)
Arguments


numeric or complex or logical vectors.
na.rm
logical. Should missing values (including NaN) be removed?
Examples

Pass a vector to sum, and it will add the elements together.
sum(1:5)

Pass several numbers to sum, and it also adds the elements.
sum(1, 2, 3, 4, 5)

In fact, you can pass vectors into several arguments, and everything gets added.
sum(1:2, 3:5)

If there are missing values, the sum is unknown, i.e., also missing, ….
sum(1:5, NA)
… unless we exclude missing values explicitly:
sum(1:5, NA, na.rm = TRUE)

调试分析,原来原因如下

> a<-c(1,2,2,3,3,3)
> a==3
[1] FALSE FALSE FALSE  TRUE  TRUE  TRUE
> sum(a==3)
[1] 3

赞叹此法真的巧妙!!!

运行结果

> doubleten<-function(n){
+   m<-0
+   for (i in 1:n) {
+     u<-runif(7)
+     x<-floor(u*10)+1
+     if(sum(x==10)==2){m=m+1}
+   }
+  rt<-c('两个10的概率'=m/n);rt
+ }
> doubleten(10000)
两个10的概率 
       0.122 

DONE!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值