限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410
想想自己写一个吧。
接下来分3个部分来说明题目的实现过程:
1. 解题逻辑&函数
2. Rcode示例
3. 交作业
一、解题逻辑&函数
1. 解题逻辑
假设:n=4,有n+2张牌,即6张牌,1,2,3,4是绿牌,5,6是红牌。
1> 创建样本空间大矩阵Ω
矩阵Ω的行数为随机试验所有可能结果的总数样本空间,列数为card数量;
当取出第一张card时有6种可能,第二张有5种可能,…,第六张有1种可能,也就是总共有 6*5*4*3*2*1=6! 种card排列组合结果,即行数为6! ;
第1列记录第一张card值,第2列记录第二张card值,以此类推,总共六张card,即列数为6;
2> 查找每个事件中两张红牌的位置;
3> 根据红牌位置将随机事件结果赋值给X、Y、Z;
4> 计算每个事件中X、Y、Z分别包含几张绿牌;
5> 定义目标事件&计算概率
图中所示为步骤1-2-3的矩阵示例。
2. R语言相关函数
对于上述解题步骤,涉及到这些R语言操作以及函数使用:
1> 计算N的阶乘:prod(1:N)
2> 生成1:N所有排列组合,调用包中的函数:()
(注意:这里不可以使用()函数,()只能用来模拟随机事件,不能生成样本空间。)
3> 字符串拼接:paste()
4> 在字符串中查找指定字符的位置,调用包中的函数:()
5> 字符串截取:()
6> 计算字符串中指定字符的个数:()
7> 对数据框筛选指定条件的行:()
二、Rcode示例
【1. 创建样本空间Ω】
()
【2. 查找2张红牌位置】
分成3段code来实现
# 1. 对每一行生成一个拼接字符串
for (i in 1:prod(1:N)) {
Omega[i,N+1] }
# 2. 计算指定字符:n+1、n+2所在位置
()
()
$$
# 3. 计算第一次出现红牌、第二次出现红牌的位置
for (i in 1:prod(1:N)) {
Omega$[i]Omega$[i]}
【3. 将随机事件结果赋值给X、Y、Z】
# 根据红牌位置截取字符串,生成X、Y、Z的数据集
Omega$$$
【4. 计算每个事件中X、Y、Z分别包含几张绿牌】
for (i in 1:prod(1:N)) {
Omega$[i]Omega$[i]Omega$[i]}
【5. 定义目标事件&计算概率】
# 事件A:每张桌子都至少有1张绿牌
# 事件B:X桌子上至少有1张绿牌
=1 & Omega$>=1 & Omega$>=1)
=1)
# 计算事件概率
nt_B
# 输出结果
head(Omega)
print(('|Ω|:',prod(1:N)))
print(('P(A):',))
print(('P(B):',))
三、交作业
将Rcode嵌入原文件的代码框中,可以将程序结果输出为HTML、docx、PDF等文件,这部分对rmd文件格式做个简单介绍。
rmd代码主要包括3个模块:
1. 文件信息设置,如:标题、作者、输出文件的格式;
2. 全局设置,如:是否在文件中显示代码部分、警告信息是否写入结果文件;
3. Rcode部分,即代码主体。
1. 文件信息设置
—
title: “用R语言创建样本空间样本空间,计算事件发生概率”
: “千行”
date: “2023/11/11”
:
:
—
2. 全局设置
“`{r setup, =FALSE}
knitr::$set(echo = FALSE)# 文件中不显示代码行
“`
3. Rcode部分
“`{r ='hold',=FALSE}
()
(Omega,10)
“`
把R代码主体替换到的Rcode中,点击Knit,就可以交作业啦~
文末:
1> 这个题最难的部分在于样本空间的创建,博主真的是不知道如何快速生成全排列组合,就先用()模拟了一个大样本矩阵;
2> 从逻辑到code实现总共用了6小时,后来问了,它1分钟内给出了结果,且代码逻辑精炼、计算过程节省内存,最惊喜的是它检索出了全排列组合函数(),帮助解决了第一步的问题,真棒!
3> 当文心一言慢悠悠走来,让我觉得AI还很远的时候,出现就是一道闪电。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410