楼主: 啦啦啦、、
5591 4

[程序分享] 用R语言模拟扔3个骰子,扔出后3个骰子的相乘的值小于90的概率,至少模拟10万次求概率 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
1
精华
0
在线时间
4 小时
注册时间
2018-9-17
最后登录
2018-10-15

楼主
啦啦啦、、 发表于 2018-9-17 20:51:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
R语言小白,
dice<-function(){
    result<-1
    for(i in 1:3){
      result<-result*sample(1:6,1)
    if(result<90) return(TRUE)
  }
}
mean(replicate(10000, dice()))
大佬麻烦看一下这个为什么输出出来一直是1呢

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
我罩着太阳 学生认证  发表于 2018-9-17 23:42:18
dice<-function(){
  result<-1
  for(i in 1:3){
    result<-result*sample(1:6,1)
   
  }
  if(result<90) return(1)
  else return(0)
}
n=10000
mean(replicate(10000, dice()))


最重要的是你的if语句要在三个相乘的result计算出来之后才能判断是否大于90
然后我加了n这个变量,这样更改次数方便一些
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
silver365 在职认证  发表于 2018-9-18 13:57:58
  1. dice <- function(){
  2.   result <- sample(1:6, 3, replace = TRUE)
  3.   a <- result[1] * result[2] * result[3]
  4.   ifelse( a < 90, 1, 0)
  5.   }
复制代码

不用for 循环语句写的,运行效率好像比for的快一些。
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

板凳
ryoeng 在职认证  发表于 2018-9-24 02:35:34
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

报纸
ntsean 发表于 2018-9-24 13:48:33
  1. mean(sapply(1:100000, function(i) prod(sample(1:6, 3, replace = TRUE)) < 90))
复制代码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-8 04:47