R语言 自定义函数之趣味程序--老虎机
****R语言 自定义函数之趣味程序--老虎机****
- 自定义函数
- 自定义规则
- 自定义格式
- 案例:老虎机
- 老虎机符号准备
- 老虎机结果分类
- 老虎机得分计算
- 开始老虎机试玩
- 获奖感言
自定义函数
R语言作为一个自由、免费、源代码开放的软件,很大程度上是借助各种各样的R包的辅助;当然并非你的想法都能用R包来实现,R本身是一种可编程的语言,因此就需要通过自编程序来实现个人的特别需求,但有时我们需要重复使用的R代码时,可能需要将某一段代码重复键入R的控制台。为了简化这一操作,我们可将这段代码打包成一个函数,运行起来会方便很多。
自定义规则
R语言的自定义函数规则
任何一个R函数包括三部分:函数名、程序主体、参数。
构建R函数时必须有function()函数进行编写,当需要引用参数是在括号里加入参数,不需要则括号里可为空。在function()之后再使用大括号{ }编写函数主体,当运行函数时,R会自动按顺序执行函数主体的程序。函数如果没有输出语句,则运行完后也不会有输出语句;因此需要自行检查是否有输出语句。
自定义格式
function_name <- function(Parameter){body
}
案例:老虎机
下面将会用编程老虎机作为自定义函数的演示。案例来源于图灵系列书籍《R语言入门与实践》,有兴趣的读者可查阅书籍获取更多详情。
老虎机符号准备
没有具体的图片符号,因此以"DD",“7”,“BBB”,“BB”,“B”,“C”,"0"这几种符号代替。各种符号出现的概率可自定义。
get_symbol为函数名,此处不需要设计参数;
wheel为符号集合;
sample函数设定了符号出现的个数及各种符号出现的概率。
#获取符号组合
get_symbol<-function(){wheel<-c("DD","7","BBB","BB","B","C","0")sample(wheel,size=3,replace = T,prob = c(0.08,0.03,0.06,0.45,0.05,0.31,0.02))
}
老虎机结果分类
老虎机的工作原理:投币之后拉下拉杆,就会开始转,如果出现特定的图形(比如三个相同)就会吐钱出来,出现相同图型越多奖金则越高。因此在计算得分之前先对结果进行分类处理。
fenlei作为函数名,以符号组合(symbols)为参数;
same代表三个符号一样;
pars代表组合里只有(“BBB”,“BB”,“B”)符号;
cherries代表组合里任意一个或两个是"C"符号
此处用到的 << 是将结果输出为全局变量
#进行结果分类
fenlei<-function(symbols){same<<-length(unique(symbols))==1pars<<-all(symbols%in%c("BBB","BB","B"))cherries<<-any(symbols%in%c("C","c","C"))
}
老虎机得分计算
老虎机的赌博机理:投入2个硬币,摇动摇杆得到三个图案组合,将图案组合与奖金池对比,即可获得收益,此处利用得分模拟老虎机奖池。
score作为函数名,以符号组合(symbols)为参数;
函数体利用条件判断语句计算各情况得分,最后以prize输出。
#进行得分计算
score<-function(symbols){if(same){payouts<<-c("DD"=100,"7"=80,"BBB"=40,"BB"=25,"B"=10,"C"=1,"0"=0)prize<<-unname(payouts[symbols[1]])}else if(pars){prize<<-5}else{cherries<-sum(symbols=="C")prize<<-c(0,2,5)[cherries+1]}
}
开始老虎机试玩
在准备好一切函数(将函数体程序都先跑一遍)之后,便可以开始游戏,可每一次游戏都要经历上面的三个环节,还是略显繁琐,因此,希望做出一个“摇杆”能够实现一键完成所有操作,直接展示结果。
play为函数名;
在准备好函数之后,play()则是“摇杆”,通过一键操作得出结果。
#生成“摇杆”
play<-function(){#获取符号组合symbols<-get_symbol()fenlei(symbols)score(symbols)#展示结果cat("symbols:",symbols) cat("\nprize:",prize)
}
获奖感言
本人“赌了几把”,结果不慎。
在玩了近百局,我总结出如下规律:
不赌你就赢了,你赌,你就输定了,而要想不输,只有一个办法,就是远离赌博,望大家远离赌博
关于编程问题希望大家多多探讨,私信随时为你而等待
R语言 自定义函数之趣味程序--老虎机相关推荐
- R语言自定义函数计算dataframe每列中的缺失值NA的个数、缺失值问题及其填充示例
R语言自定义函数计算dataframe每列中的缺失值NA的个数.缺失值问题及其填充示例 目录
- [R语言]3. R语言自定义函数
R语言有很多包,里面有很多函数,但是有时候我们还是需要自定义一些函数,这些函数能够实现一些特定的功能,其实学过一点编程的知道任何语言都可以自定义函数,R语言自定义函数格式如下: 函数的语法格式是: f ...
- R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数
R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...
- R语言自定义多分类混淆矩阵可视化函数(mutlti class confusion matrix)、R语言多分类混淆矩阵可视化
R语言自定义多分类混淆矩阵可视化函数(mutlti class confusion matrix).R语言多分类混淆矩阵可视化 目录
- R语言head函数和tail函数获取dataframe、列表list、向量vector的头部和尾部数据:tail提取数据对象的尾部数据、head提取数据对象的头部数据、默认6条数据、自定义设置返回条数
R语言head函数和tail函数获取dataframe.列表list.向量vector的头部和尾部数据:tail提取数据对象的尾部数据.head提取数据对象的头部数据.默认6条数据.自定义设置返回条数 ...
- R语言str_flatten函数通过自定义字符连接(concatenate)字符串向量中的字符串
R语言str_flatten函数通过自定义字符连接(concatenate)字符串向量中的字符串 目录 R语言st
- R语言axis函数自定义可视化的坐标轴刻度线(axis ticks)
R语言axis函数自定义可视化的坐标轴刻度线(axis ticks) 目录 R语言axis函数自定义可视化的坐标轴刻度线(axis ticks) # 自定义轴刻度
- R语言自定义极大似然估计函数、假设检验函数
R语言自定义极大似然函数函数.假设检验函数 目录 一.自定义极大似然函数 二.自定义假设检验函数 目录 一.自定义极大似然函数 1.求出似然函数,以正太分布.指数分布为例 正太分布似然函数: 指数分布 ...
- c语言自定义函数格式化,自定义函数的形式
c语言程序设计题:请用自定义函数的形式编程实现,代码: #include 请用自定义函数的形式编程实现 CSS布局HTML小编今天和大家分享 s = m. + n. + k.,m.n.k 从键盘输入( ...
最新文章
- matlab中表示拉普拉斯分布_CHAPT1:场论;电磁学和微波学的基本的数学手段和表示...
- visualStudio创建项目过程
- 机器的深度学习究竟有多“深”?
- 世界半导体集成电路发展史(超细、超全)
- zip 文件下载函数封装
- Silverlight实例教程 – Datagrid,Dataform数据验证和ValidationSummary
- 关系式调用c语言脚本_认识LoadRunner脚本语言
- 安卓手机移动端页面为body设置overflow:hidden;不起作用
- python字符串转换元组_python 字符串,列表,元组,字典相互转换
- XP停止服务,共建网络安全大环境
- 在Winform中屏蔽UnityWebPlayer的右键以及自带Logo解决方案整理
- 天涯论坛邮箱采集器1.0
- python colour-science 绘制CIE 1976色度图
- 关闭 Eureka 的自我保护机制
- 分享 百度网盘搜索引擎原理以及实现部分源码
- 岁月的剪影【五月世界末日】
- PHP中date时差问题解决方法
- Java 基础核心总结
- 前端学习从入门到高级全程记录之13 (京东项目一)
- 【太虚AR_v0.1】使用教程 | AR录屏