### CSC 221: Computer Programming I Fall 2005 HW4: Repetition and Simulation

For this assignment, you will modify the code for simulating volleyball games and perform numerous experiments.

1. Download the files VolleyballSim.java, VolleyballStats.java,and Die.java and build a working project. Be sure to comment out the println statements in VolleyballSim, as we demonstrated in class, to avoid excessive output. If you specify equal rankings, are the scores of games relatively close? Should they be? Explain your answer and provide the scores for several games to support it.

2. Assuming team 1 has a ranking of 50 and team 2 has a ranking of 55 (10% better), perform three different sets of simulations for each of the following winning point totals. Report the winning percentages of team 1 in the table below:

SIMULATION 1SIMULATION 2SIMULATION 3
10,000 games to 15
10,000 games to 20
10,000 games to 25
10,000 games to 30

3. For each of the given winning point totals, are the three winning percentages that you obtained fairly consistent? Would you expect them to be? If not, modify the VolleyballStats class so that 100,000 games are played and repeat the simulations. Explain your answers.

4. Are the winning percentages affected by the changing the points needed to win? That is, if the number of points required to win is increased, does this affect (positively or negatively) the chances of team 1 winning? If your data suggests an effect, run several more simulations with different winning point totals to confirm the pattern. Would this effect (if any) be more pronounced if the teams were less evenly matched, say 50 vs. 80? Explain your answers.

5. Next, we want to compare the two different scoring schemes, rally and sideout scoring. A simple approach is to define another method, named playGameSideout, which simulates a game using the sideout scoring system. This new method will be almost identical to the existing playGameRally method that uses rally scoring, except that it awards a point only if the server wins the rally. To balance out the fact that sideout scoring gives a slight advantage to the team who serves first, have the initial serve randomly assigned to one of the teams.

Once you have your playGameSideout method working in VolleyballSim, modify the playGames method in VolleyballStats so that it performs repeated experiments using both scoring schemes and displays both winning percentages. The output of the method should look like:

Assuming (50-55) rankings over 10000 games to 25: team 1 winning percentage: 36.56% (rally) vs. 33.46% (sideout)

6. Assuming team 1 has a ranking of 50 and team 2 has a ranking of 60 (20% better), perform three different sets of simulations for each of the following winning point totals. Report the winning percentages of team 1 using both rally and sideout scoring in the table below:

SIMULATION 1
(rally : sideout)
SIMULATION 2
(rally : sideout)
SIMULATION 3
(rally : sideout)
10,000 games to 15
10,000 games to 20
10,000 games to 25
10,000 games to 30

7. As we saw in class, rally scoring accentuates differences in talent. That is, if team 1 is 10% better than team 2, the likelihood of them winning a game is actually much more than 10% better than for team 2. Which of the two scoring schemes accentuates differences more? Provide additional statistics as needed to justify your claim.

8. Suppose you were a member of the committee deciding on a switch from sideout to rally scoring. Recall that women's college volleyball previously used sideout scoring, with games played to 15. Perform experiments to determine the equivalent winning point total for rally scoring that would preserve competitive balance. That is, the winning percentage of team 1 using rally scoring should be roughly the same as the winning percentage using sideout scoring to 15. This relationship should hold for a wide range of team strengths. Provide statistics to justify your answer.

9. Finally, consider the hypothesis that the rule change was made to shorten the lengths of games. Modify the VolleyballSim class so that it keeps track of the number of rallies as a game is played. There should be a private field to store the number of rallies, which is updated by the playGameRally and playGameSideout methods. An additional method named getLastGameLength should be provided for accessing this field. Next, modify the playGames method in VolleyballStats so that it displays average game lengths for both scoring systems in addition to winning percentages. The output of the method should look like: Assuming (50-55) rankings over 10000 games to 25: team 1 winning percentage: 36.56% (rally) vs. 33.46% (sideout) average game length: 44.5438 (rally) vs. 84.5814 (sideout)

10. Does changing from sideout scoring (with games to 15) to rally scoring (with games to 25) tend to shorten games? What if games were played to 30 under rally scoring? Provide statistics to justify your answer.