****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语言 自定义函数之趣味程序--老虎机相关推荐

  1. R语言自定义函数计算dataframe每列中的缺失值NA的个数、缺失值问题及其填充示例

    R语言自定义函数计算dataframe每列中的缺失值NA的个数.缺失值问题及其填充示例 目录

  2. [R语言]3. R语言自定义函数

    R语言有很多包,里面有很多函数,但是有时候我们还是需要自定义一些函数,这些函数能够实现一些特定的功能,其实学过一点编程的知道任何语言都可以自定义函数,R语言自定义函数格式如下: 函数的语法格式是: f ...

  3. R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数

    R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...

  4. R语言自定义多分类混淆矩阵可视化函数(mutlti class confusion matrix)、R语言多分类混淆矩阵可视化

    R语言自定义多分类混淆矩阵可视化函数(mutlti class confusion matrix).R语言多分类混淆矩阵可视化 目录

  5. R语言head函数和tail函数获取dataframe、列表list、向量vector的头部和尾部数据:tail提取数据对象的尾部数据、head提取数据对象的头部数据、默认6条数据、自定义设置返回条数

    R语言head函数和tail函数获取dataframe.列表list.向量vector的头部和尾部数据:tail提取数据对象的尾部数据.head提取数据对象的头部数据.默认6条数据.自定义设置返回条数 ...

  6. R语言str_flatten函数通过自定义字符连接(concatenate)字符串向量中的字符串

    R语言str_flatten函数通过自定义字符连接(concatenate)字符串向量中的字符串 目录 R语言st

  7. R语言axis函数自定义可视化的坐标轴刻度线(axis ticks)

    R语言axis函数自定义可视化的坐标轴刻度线(axis ticks) 目录 R语言axis函数自定义可视化的坐标轴刻度线(axis ticks) # 自定义轴刻度

  8. R语言自定义极大似然估计函数、假设检验函数

    R语言自定义极大似然函数函数.假设检验函数 目录 一.自定义极大似然函数 二.自定义假设检验函数 目录 一.自定义极大似然函数 1.求出似然函数,以正太分布.指数分布为例 正太分布似然函数: 指数分布 ...

  9. c语言自定义函数格式化,自定义函数的形式

    c语言程序设计题:请用自定义函数的形式编程实现,代码: #include 请用自定义函数的形式编程实现 CSS布局HTML小编今天和大家分享 s = m. + n. + k.,m.n.k 从键盘输入( ...

最新文章

  1. matlab中表示拉普拉斯分布_CHAPT1:场论;电磁学和微波学的基本的数学手段和表示...
  2. visualStudio创建项目过程
  3. 机器的深度学习究竟有多“深”?
  4. 世界半导体集成电路发展史(超细、超全)
  5. zip 文件下载函数封装
  6. Silverlight实例教程 – Datagrid,Dataform数据验证和ValidationSummary
  7. 关系式调用c语言脚本_认识LoadRunner脚本语言
  8. 安卓手机移动端页面为body设置overflow:hidden;不起作用
  9. python字符串转换元组_python 字符串,列表,元组,字典相互转换
  10. XP停止服务,共建网络安全大环境
  11. 在Winform中屏蔽UnityWebPlayer的右键以及自带Logo解决方案整理
  12. 天涯论坛邮箱采集器1.0
  13. python colour-science 绘制CIE 1976色度图
  14. 关闭 Eureka 的自我保护机制
  15. 分享 百度网盘搜索引擎原理以及实现部分源码
  16. 岁月的剪影【五月世界末日】
  17. PHP中date时差问题解决方法
  18. Java 基础核心总结
  19. 前端学习从入门到高级全程记录之13 (京东项目一)
  20. 【太虚AR_v0.1】使用教程 | AR录屏

热门文章

  1. 记一次盖茨木马应急响应
  2. 你真的了解分类模型评估指标都有哪些吗?【附Python代码实现】
  3. 2021年6月PMP考试紧急缓考怎么办理?
  4. Win10 Windows installer 服务
  5. JavaWeb(华清远见)
  6. Python-接口自动化流程(pytest)
  7. 弹钢琴flash游戏
  8. 使用python+ffmpeg桌面录制软件
  9. 如何快速的熟悉对接新项目,并快速融入开发
  10. 使用 Python 在 2 秒内评估国际象棋位置