中国选手与日本选手进行乒乓球比赛,每局先得11分者赢得此局,整个比赛5局3胜,如某队获胜达到3局,则赢得此场比赛。
假设中国选手每一分获胜的概率为m,(含m,m<1)。
请模拟比赛过程,并输出各队获胜情况。
请注意:
请使用random库中的random模拟胜率
输入格式:
请在第一行输入整数随机种子。
请在第二行输入中国队每一分获胜的概率(大于0小于1的数)
请在第三行输入要模拟的比赛次数
输出格式:
对每一组输入,根据模拟结果在一行中输出:
Chinese team:m,Japanese team:n。
在这里给出一组输入。例如:
3
0.6
100
输出样例:
在这里给出相应的输出。例如:
Chinese team:98,Japanese team:2
答案
复用的之前的代码,做了略微调整,使用函数。
如果在测试区出现如下问题:
不要着急,直接提交试试。确实是有问题,但是提交可以成功。
本提示为了探究问题创建:
之前的测试结果应该是:
很明显,上个周的答案是没有问题的,但是到了今天,答案变了,和上个周不一样了。
发生甚么事了?
初步推断与random的seed方法有关,查看源代码后发现源代码并没有与时间关联,但是决定了随机数变化的只有seed方法,源代码如下:
都是常数运算,不该被时间影响啊。此提示仅为了一个猜想,若得到结果会留档保存的。
以下是成功案例
import random
def smallParty(theSeed,times,odds,CHWinCount,JPWinCount):
random.seed(theSeed)
for i in range(times):
# 小局中国队获胜次数
ChGameWinCount = 0
# 小局日本队获胜次数
JPGameWinCount = 0
# 中国队日本队分数
CHCount = 0
JPCount = 0
# 进入小局模拟循环 五局三胜
while ChGameWinCount != 3 and JPGameWinCount != 3:
Count = random.random();
if (CHCount == 11 and CHCount - JPCount >= 2) or (JPCount == 11 and JPCount - CHCount >= 2) or (
CHCount > 11 and JPCount > 11 and (CHCount > JPCount or CHCount < JPCount)):
if CHCount > JPCount:
ChGameWinCount += 1
CHCount = 0
JPCount = 0
else:
JPGameWinCount += 1
CHCount = 0
JPCount = 0
elif Count <= odds:
CHCount += 1
elif Count > odds:
JPCount += 1
# 判断是否大局获胜
if ChGameWinCount == 3:
CHWinCount += 1;
ChGameWinCount = 0;
JPGameWinCount = 0;
CHCount = 0
JPCount = 0
else:
JPWinCount += 1;
ChGameWinCount = 0;
JPGameWinCount = 0;
CHCount = 0
JPCount = 0
return CHWinCount
theSeed = int(input())
odds = eval(input())
times = int(input())
# 大局中国队获胜分数
CHWinCount = 0
# 大局日本队获胜分数
JPWinCount = 0
# 函数接口
CHWinCount=smallParty(theSeed,times,odds,CHWinCount,JPWinCount)
JPWinCount = times-CHWinCount
print(f"Chinese team:{CHWinCount},Japanese team:{JPWinCount}")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)