米粉加蛋 2023-04-12 15:01 采纳率: 100%
浏览 73
已结题

Linux系统shell程序

编写一个shell程序(脚本文件名不限),题目如下:
A同学今天没课,想在游戏中努力18小时,偷偷卷死所有人,已知这个游戏为积分制,每局游戏30分钟,游戏规则如下:
一局游戏人数为8人,前四名加分,后四名扣分,具体计分方式为:
第一名:+ 200
第二名:+ 50
第三名:+ 30
第四名:+ 10
第五名:- 10
第六名:- 30
第七名:- 50
第八名:- 250
按照A同学之前在这个游戏中驰骋的记录,获得每个名次的概率如下:
第一名: 20%
第二名: 15%
第三名: 10%
第四名: 30%
第五名: 15%
第六名: 4%
第七名: 4%
第八名: 2%

请你帮A同学计算一下,按照之前的战绩,Ta想上n分,今天可以完成吗?
注:n为手动输入。

img

  • 写回答

5条回答 默认 最新

  • weixin_52047738 2023-04-12 15:17
    关注

    以下是一个 Bash shell 脚本,可以计算 A 同学是否能够在今天的游戏中获得足够的积分达到目标分数。你可以将脚本保存为一个独立的文件(如 game.sh),然后运行该脚本并输入目标分数即可。

    #!/bin/bash
    
    # 定义各个名次的得分和概率
    scores=(200 50 30 10 -10 -30 -50 -250)
    probs=(0.2 0.15 0.1 0.3 0.15 0.04 0.04 0.02)
    
    # 获取输入的目标分数
    echo "请输入目标分数:"
    read target_score
    
    # 计算A同学需要获得的名次概率
    remain_prob=1
    for ((i=0; i<${#scores[@]}; i++)); do
      if [ $target_score -le 0 ]; then
        break
      fi
      if [ ${scores[$i]} -gt 0 ]; then
        remain_prob=$(bc <<< "scale=4; $remain_prob / (1 - ${probs[$i]})")
        target_score=$(($target_score - ${scores[$i]}))
      else
        remain_prob=$(bc <<< "scale=4; $remain_prob / ${probs[$i]}")
        target_score=$(($target_score - ${scores[$i]}))
      fi
    done
    
    # 根据剩余概率判断是否能达到目标分数
    if [ $(bc <<< "$remain_prob >= 1") -eq 1 ]; then
      echo "A同学可以在游戏中达到目标分数。"
    else
      echo "A同学不能在游戏中达到目标分数。"
    fi
    

    脚本的实现逻辑如下:

    1、定义了 scoresprobs 数组,用于存储各个名次的得分和概率。

    2、获取目标分数 target_score 的输入。

    3、根据 A 同学想要获得的分数,计算出 A 同学需要获得每个名次的概率,用 remain_prob 变量表示。具体计算方式为:遍历 scores 数组,如果当前名次得分为正数,说明 A 同学需要获得这个名次,此时需要将 remain_prob 除以当前名次的获得概率(即乘以该名次的分数获得概率的倒数);如果当前名次得分为负数,说明 A 同学需要尽量避免获得这个名次,此时需要将 remain_prob 除以当前名次的未获得概率。同时,在计算过程中需要将 target_score 减去当前名次的得分,以求得 A 同学以后需要获得的分数。

    4、根据计算得到的 remain_prob 值,判断 A 同学今天是否能够达到目标分数。如果 remain_prob 值大于等于 1,则说明其可以达到目标分数;否则说明达不到。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上