介绍

一首暖心的经典歌曲,和这段程序最配了。为什么在阳光、黑暗和金桥之间设定这样的函数,只有自己最懂。

Song: Bridge Over Troubled Water

代码

Sunshine <- function(x) {                  
  # Sunshine 为此函数名称,X 为函数中涉及到的参数
  
  # 给出一个范围 1 到 20,而 s 取 20 中的任何一个
  s <- sample(1:20,1)
  # 用 x 进行一系列计算
  m <- (x/5+3)*6-x*5+x^sqrt(1/3)
  
  if (m > s)
    # 如果计算结果大于 S,则输出“你得到了阳光!”
    "your get sunshine !"
  else if (m < s)
    # 如果计算结果小于 S,则输出“你陷入了黑暗!”
    "your fall into the dark !"
  else  
    "your get the bridge!"
}
# 如果计算在s的范围内,则显示“你得到了一座桥”

演示

Sunshine(4)
## [1] "your fall into the dark !"
Sunshine(0)
## [1] "your get sunshine !"

点评

这也是一个猜数游戏,不过这个和之前的都有所不同。

首先调用 sample() 函数从 1 到 20 中随机选择一个整数,接着对用户猜的数进行计算后与随机数比较得到猜数游戏的结果。

不过由于输入参数再经过公式计算之后正好是整数,而且是 1 到 20 之间的整数的可能性很小,所以得到 bridge 还是非常难呢。

最后,还是想看一看那个处理输入数值的公式 (x/5+3)*6-x*5+x^sqrt(1/3)。我想问作者是怎么弄出这么个公式的呢,加减乘除和乘方(^)开方(sqrt())都给用上了。我们还是用 R 来看看这个函数的图形吧。

plot(function(x){(x/5+3)*6-x*5+x^sqrt(1/3)}, 0, 10, ylab = "func")

看这图形大体近似一条直线,最大值在 18 左右,零点在 5 到 6 之间,看来想得到阳光也不是那么容易呢。大家如果有兴趣还可以继续研究,找一下得到阳光的概率什么的,也会是个有意思的话题呢。