应该是80%吧,一个小程序模拟进行10000000场比赛输出结果接近80%
登录 | 论坛导航 -> 华新鲜事 -> 求学狮城 | 本帖共有 2 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:MetalGearSnake (等级:3 - 略知一二,发帖:128) 发表:2008-12-03 11:08:47  楼主  关注此帖评分:
有趣的网球输赢概率题已知甲乙两个网球手,每盘比赛甲胜出的几率是2/3,乙是1/3,每胜一盘的一分 两人比赛,当一人比另一人多得两分时,前者胜 请问甲胜的几率是多少?(注:需要考虑两人平局的情况)
应该是80%吧,一个小程序模拟进行10000000场比赛输出结果接近80%
java代码如下:

import java.util.*;

public class Tennis
{
public static void main(String[] args)
{
Random random = new Random();
int aWin = 0, bWin = 0;
int n = (new Scanner(System.in)).nextInt(); // n为自定义比赛次数
for (int i = 0; i < n; i++)
{
int aScore = 0, bScore = 0; // 每场比赛开始时甲乙得分各为0
while (Math.abs(aScore - bScore) < 2) // 直到有人领先2分时,该场比赛结束
{
int game = Math.abs(random.nextInt() % 3); // 随机生成0,1,2间的一个整数
if (game == 0 || game == 1) // 每盘比赛甲胜出的几率是2/3
aScore++; // 甲得一分
else
bScore++; // 否则乙得一分
if (aScore - bScore >= 2) // 若甲领先2分,甲胜一场比赛
aWin++;
else if (bScore - aScore >= 2) // 若乙领先2分,乙胜一场
bWin++;
}
}
System.out.println((double) aWin * 100 / n + "%");
}
}

以下是几个测试结果:
100
84.0%
1000
81.5%
100000
79.84%
10000000
79.98379%
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:MetalGearSnake (等级:3 - 略知一二,发帖:128) 发表:2008-12-04 15:15:22  2楼
有没有办法把平局也放进去??请问:有没有办法把平局也放进去 CASE 1 A - B >= 2 Case 2 B - A >= 2 Case 3 A = B ---> 放回原先的循环 System.out.println((double) aWin * 100 / n + "%"); 另外可否print bWin% ? draw?
每场比赛要有局数限制才会产生平局的情况吧?
如果加入每场比赛局数限制,修改后的代码如下:

import java.util.*;

public class Tennis
{
public static void main(String[] args)
{
Random random = new Random();
int aWin = 0, bWin = 0;
int n = (new Scanner(System.in)).nextInt(); // n为比赛场数
int m = (new Scanner(System.in)).nextInt(); // m为每场比赛回合数
for (int i = 0; i < n; i++)
{
int aScore = 0, bScore = 0, j = 0;
while (Math.abs(aScore - bScore) < 2 && j < m)
{
int game = Math.abs(random.nextInt() % 3);
if (game == 0 || game == 1)
aScore++;
else
bScore++;
if (aScore - bScore >= 2)
aWin++;
else if (bScore - aScore >= 2)
bWin++;
j++;
}
}
System.out.println((double) aWin / n * 100 + "%\n" +
(double) bWin / n * 100 + "%\n" + (100 - (double) (aWin + bWin) / n * 100) + "%\n");
}
}

如果限制10局,甲胜的概率貌似接近78.6几,几个测试结果:

100
10
75.0%
25.0%
0.0%

1000
10
79.10000000000001%
19.6%
1.2999999999999972%

10000
10
78.59%
19.45%
1.9599999999999937%

100000
10
78.513%
19.744999999999997%
1.7420000000000044%

10000000
10
78.61402%
19.653409999999997%
1.7325699999999955%

10000000
10
78.63001%
19.63833%
1.731660000000005%

10000000
10
78.60665%
19.65362%
1.7397299999999944%
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
论坛导航 -> 华新鲜事 -> 求学狮城 | 返回上一页 | 本主题共有 2 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码