R语言-laohuji
项目三-tiger机
说明:每玩一次老ji游戏需要花费一元钱。钻石符号(DD)可以百搭,并且能够将最终的金额加倍。

任务分解:
任务分解的步骤:
将复杂的任务分解为一些简单的子任务;
使用实例;
用通俗的语言描述解决方案,然后将其转换成R代码。
任务分解的种类:有序步骤和同类情况
老虎JI程序任务的初步分解
生成符号组合:
#生成符号组合
get_symbols<-function(){
wheel<-c("DD","","BBB","BB",
"B","C","")
sample(wheel,size = 3,replace = T,
prob = c(0.03,0.03,0.06,0.1,
0.25,0.01,0.52))
}
get_symbols()
显示符号组合
#显示符号组合
print("hello \nworld")
cat("hello \nworld")
print(get_symbols())
#分支语句
>
> #if、ifelse、switch
> #if:主要处理单个的逻辑条件
> #如果一个数值小于0,取他的绝对值
> qz<-function(x){
+ if(x<0){
+ abs(x)
+ -x
+ }
+ }
> qz(-9)
[1] 9
> #如果一个数值大于0,返回1,如果小于0,
> #返回-1,如果等于0,返回0
> jc<-function(x){
+ if(x>0){
+ return(1)
+ }else if(x<0){
+ return(-1)
+ }else{
+ return(0)
+ }
+ }
> jc(9)
[1] 1
> jc(-9)
[1] -1
> jc(0)
[1] 0
> jc1<-function(x){
+ if(x>0) 1 else if(x<0)-1 else 0
+ }
> jc1(9)
[1] 1
> jc1(-9)
[1] -1
> jc1(0)
[1] 0
> dj<-function(x){
+ if(x>=90){
+ "A"
+ }else if(x>=80){
+ "B"
+ }else if(x>=70){
+ "C"
+ }else if(x>=60){
+ "D"
+ }else "F"
+ }
> dj(60)
[1] "D"
> dj(50)
[1] "F"
ifelse:可以处理一个向量
> #ifelse:可以处理一个向量
> jc2<-function(x){
+ ifelse(x>0,1,-1)
+ }
> jc2(c(3,-7))
[1] 1 -1
> #练习:如果x>0,返回x本身,
> #如果x<0,取它的绝对值
> jc3<-function(x){
+ ifelse(x>0,x,abs(x))
+ }
> jc3(c(3,-3))
[1] 3 3
> abs(-3:3)
[1] 3 2 1 0 1 2 3
> #如果一个数值大于5,就返回5,
> #如果-5到5之间,保持本身不变
> #如果小于-5,返回-5
> jc4<-function(x){
+ ifelse(x>5,5,ifelse(x>=-5,x,-5))
+ }
> jc4(-2)
[1] -2
#pmax、pmin
pmax(c(3,8,9),c(1,9,7))
[1] 3 9 9
> pmin(c(3,8,9),c(1,9,7))
[1] 1 8 7
> jc5<-function(x){
+ pmax(-5,pmin(5,x))
+ }
> jc5<-function(x){
+ pmin(5,pmax(-5,x))
+ }
> jc5(c(-3,6))
[1] -3 5
switch
#switch:针对一个数字或者一个字符串来选择性的
#执行某些语句
switch(1,"x","y")
switch(2,"x","y")
switch(3,"x","y")
switch("a",a=1,b=2)
switch("c",a=1,b=2)
switch("c",a=1,b=2,3)
switch("d",a=1,b=2,3)

switchf<-function(x){
switch(x,
a=1:3,
b=list(x=0,y=1),
c={
cat("你选择了c\n")
list(name="c",value="haha")
})
}
switchf("a")
switchf("b")
switchf("c")

#循环:for、while、repeat
#for循环
#语法结构:
for (variable in vector) {
expr
}
for (i in 1:3) {
cat("当前的i值为",i,"\n")
}
i
for (i in c("你","hao")) {
cat("当前的i值为",i,"\n")
}
#打印每个元素的长度和类
nk<-list(a=c(1,2,1),b=letters[1:4])
for (i in nk) {
cat("i的长度:",length(i),"\nclass:",class(i),"\n")
}
#求1到100的和
sum(1:100)
s<-0
for (i in 1:100) {
s<-s+i
}
s
#管理for循环:break、next
#管理for循环:break、next
#break:终止循环
#1到5,遇到3时终止,打印1和2
for (i in 1:5) {
if(i==3) break
cat("message:",i,"\n")
}
#1000到1100,满足的条件是i的平方除以11的余数
#与i的3次方除以17的余数相同,取出i的值
#取余数:%%
9%%4
for (i in 1100:1000) {
if((i^2)%%11==(i^3)%%17){
cat(i,"\n")
break
}
} #next:跳过本次循环
#1到5,跳过3,打印1,2,4,5
for (i in 1:5) {
if(i==3) next
cat("message:",i,"\n")
}
#while循环
#语法结构
while(cond){
expr
}
#当x<=5时,打印x的值
x<-0
while (x<=5) {
cat(x,"\n")
x<-x+1
}
#x从0开始,自增加1,当x=2时,执行下一次
#循环,当x=4时,终止循环
x<-0
repeat{
x<-x+1
if(x==2) next
else if(x==4) break
else cat(x,"\n")
}
计算中奖金额
#第一种情况:三个符号都相同
#7 7 7
symbol<-rep("",3)
#第一种方法
symbol[1]==symbol[2]&symbol[2]==symbol[3]
#第二种方法
unique(symbol)
length(unique(symbol))==1
#第三种方法
all(symbol==symbol[1]) #3个相同情况下: 第一种方式
if (all(symbol==symbol[1])) {
if(symbol[1]=="DD") prize<-100
else if(symbol[1]=="") prize<-80
else if(symbol[1]=="BBB") prize<-40
else if(symbol[1]=="BB") prize<-25
else if(symbol[1]=="B") prize<-10
else if(symbol[1]=="C") prize<-10
else prize<-0
}
prize #第二种方式:
switch(symbol[1],"DD"=100,""=80,"BBB"=40,
"BB"=25,"B"=10,"C"=10,""=0) #第三种方式 查找表的方式
if (all(symbol==symbol[1])) {
payout<-c("DD"=100,""=80,"BBB"=40,
"BB"=25,"B"=10,"C"=10,""=0)
prize<-unname(payout[symbol[1]])
}
prize
# 去掉名称unname
unname(payout[symbol[1]])
payout[[symbol[1]]]
第二种情况:全是杠
#第二种情况:全是杠
#B BB B
symbol<-c("B","BB","BBB")
all(c("","BB","BBB") %in% c("B","BB","BBB"))
if (all(symbol==symbol[1])) {
payout<-c("DD"=100,""=80,"BBB"=40,
"BB"=25,"B"=10,"C"=10,""=0)
prize<-unname(payout[symbol[1]])
}else if(all(symbol %in% c("B","BB","BBB"))){
prize<-5
}
第三种情况:计算樱桃的数量
symbol<-c("C","BB","BBB")
sum(symbol=="C")
if (all(symbol==symbol[1])) {
payout<-c("DD"=100,""=80,"BBB"=40,
"BB"=25,"B"=10,"C"=10,""=0)
prize<-unname(payout[symbol[1]])
}else if(all(symbol %in% c("B","BB","BBB"))){
prize<-5
}else {
yt<-sum(symbol=="C")
prize<-c(0,2,5)[yt+1]
}
if(yt==0){
prize<-0
}else if(yt==1){
prize<-2
}else if(yt==2){
prize<-5
}
prize
R语言-laohuji的更多相关文章
- R语言作为BI中ETL的工具
R语言作为BI中ETL的工具,增删改 R语言提供了强大的R_package与各种数据库进行数据交互. 外加其强大数据变换清洗函数,为ETL提供一条方便快捷的道路. RODBC ROracal RMys ...
- R语言环境安装与基本使用
R语言安装包可以从这个地址选择合适的URL去下载:https://cran.r-project.org/mirrors.html,这里使用这个https://mirrors.tuna.tsinghua ...
- R语言绘制空间热力图
先上图 R语言的REmap包拥有非常强大的空间热力图以及空间迁移图功能,里面内置了国内外诸多城市坐标数据,使用起来方便快捷. 开始 首先安装相关包 install_packages("dev ...
- [R]R语言中的%>%和%.%
最近在网上看R的代码,常常看到 x %>% y 的写法. 样子看着像是pipe的用法,搜了一下, 没找到语法的相关说明. 今天突然开窍,想着 %>% 可能不是语言本身支持的语法,可能是某个 ...
- .Net调用R语言
///加载自己写的R语言算法库 public List<double> GetZTFB(double[] data) { List<double> par = new List ...
- 用R语言的quantreg包进行分位数回归
什么是分位数回归 分位数回归(Quantile Regression)是计量经济学的研究前沿方向之一,它利用解释变量的多个分位数(例如四分位.十分位.百分位等)来得到被解释变量的条件分布的相应的分位数 ...
- R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...
- R语言-处理异常值或报错的三个示例
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html Tuesday, March 31, 2015 之前用rvest帮人写了一个定期抓取amazon ...
- R语言爬虫初尝试-基于RVEST包学习
注意:这文章是2月份写的,拉勾网早改版了,代码已经失效了,大家意思意思就好,主要看代码的使用方法吧.. 最近一直在用且有维护的另一个爬虫是KINDLE 特价书爬虫,blog地址见此: http://w ...
随机推荐
- 关于 IIS Express 常用设置
关于 IIS Express 常用设置 站点绑定 IIS Express Web 服务器默认只绑定了 localhost 的主机名,这就意味着无法通过内网或其他自定义域名进行访问,可通过如下操作添加其 ...
- JDK性能分析工具-引用于深入理解JVM
1.jps(JVM Process Status Tool) 列出正在运行的虚拟机进程. 2.jstat(JVM Statistics Monitoring Tool) 显示运行状态信息. 3.jin ...
- [转]UiPath State Machines
本文转自:https://docs.uipath.com/studio/docs/state-machines A state machine is a type of automation that ...
- 使用POI导出百万级数据到excel的解决方案
1.HSSFWorkbook 和SXSSFWorkbook区别 HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls,一张表最大支持65536行数据,256列 ...
- Spring整合JMS消息中间件
1. 点对点模式 1.1消息生产者 (1)创建工程springjms_producer,在POM文件中引入SpringJms .activeMQ以及单元测试相关依赖 (2)在src/main/reso ...
- RMAN异机恢复主要步骤和注意事项
以后改行了或老了回头看看,我曾经会这些,也是件愉快的事 [备份]--创建目录[oracle@test20 backup]$ mkdir -p /home/oracle/backup--备份脚本[ora ...
- Python升级后ssl模块不可用问题解决和浅析
在Cent0S 7.5下将Python 2.7.5升级到Python 3.6.6后,发现ssl模块不可用,具体详细信息如下所示: [root@db-server ~]# pip list Packag ...
- ORA-17627: ORA-12577:关于文件存储满的问题
问题描述:搭建DG的时候,要rman从orcl恢复到orclstd数据库来,dup复制了半天,结果最后报错:ORA-17627: ORA-12577: Message 12577 not found; ...
- 冒泡排序(C语言)
# include<stdio.h> int main(void) { int arr[10]={5,4,7,9,2,3,1,6,10,8}; //定义一个位排序的数组 int i; // ...
- JS高程中的垃圾回收机制与常见内存泄露的解决方法
起因是因为想了解闭包的内存泄露机制,然后想起<js高级程序设计>中有关于垃圾回收机制的解析,之前没有很懂,过一年回头再看就懂了,写篇博客与大家分享一下. #内存的生命周期: 分配你所需要的 ...


