
Simulates the volleyball game
Program Plan:
- Import the header file.
- Define the “main” method.
- Call the “printIntro ()” method
- Call the “getInputs ()” method.
- Call the “normalVolley ()” method.
- Call the “rallyVolley ()” method.
- Call the “printSummary ()” method.
- Define the “printIntro()” method.
- Print the intro statements.
- Define the “getInputs()” method.
- Get the player A possible for win from the user.
- Get the player B possible for win from the user.
- Get how many games to simulate from the user.
- Define the “normalVolley()” method.
- Set the values
- Iterate “i” until it reaches “n” value
- Call the method
- Check “scoreA” is greater than “scoreB”
- Increment the “winsA” value
- Otherwise, increment the “winsB” value.
- Return the value.
- Define the “simOneMatch ()” method
- Set the values
- Check “winsA” and “winsB” is not equal to 2
- Call the “simOneGame ()” method.
- Check “scoreA” is greater than “scoreB”
- Increment the “winsA” value
- Increment the “x” value
- Otherwise, increment the “winsB” value
- Increment the “x” value
- Return the result
- Define the “simOneGame ()” method
- Call the “findService ()” method
- Set the values
- Check the condition
- If “serving” is equal to “A”
- Check “random ()” is less than “probA”
- Increment the “scoreA” value
- Otherwise, set the value
- Check “random ()” is less than “probA”
- Check “serving” is equal to “B”
- Check “random ()” is less than “probB”
- Increment the “scoreB” value
- Otherwise, set the value.
- Return the results.
- If “serving” is equal to “A”
- Define the “findService ()” method
- Check result of “x%2” is equal to 0
- Return “A”
-
-
- Otherwise, return “B”.
-
-
- Return “A”
- Check result of “x%2” is equal to 0
- Define the “gameOver ()” method
- Check “a” or “b” is greater than 15
- Check “a-b” is greater than or equal to 2
- Return true.
- Otherwise, return false.
-
-
- Otherwise, return false.
-
-
- Check “a-b” is greater than or equal to 2
- Check “a” or “b” is greater than 15
- Define the “rallyVolley()” method.
- Set the values
- Iterate “i” until it reaches “n” value
- Call the method
- Check “scoreA” is greater than “scoreB”
- Increment the “winsA” value
- Otherwise, increment the “winsB” value.
- Return the value.
- Define the “simOneGame ()” method
- Call the “findService ()” method
- Set the values
- Check the condition
- If “serving” is equal to “A”
- Check “random ()” is less than “probA”
- Increment the “scoreA” value
- Otherwise, set the value.
- Increment the “scoreB” value.
- Check “random ()” is less than “probA”
- Check “serving” is equal to “B”
- Check “random ()” is less than “probB”
- Increment the “scoreB” value
- Otherwise, set the value.
- Increment the “scoreA” value.
- Return the results.
- If “serving” is equal to “A”
- Define the “findService ()” method
- Check result of “x%2” is equal to 0
- Return “A”
-
-
- Otherwise, return “B”.
-
-
- Return “A”
- Check result of “x%2” is equal to 0
- Define the “gameOver ()” method
- Check “a” or “b” is greater than 25
- Check “a-b” is greater than or equal to 2
- Return true.
- Otherwise, return false.
-
-
- Otherwise, return false.
-
-
- Check “a-b” is greater than or equal to 2
- Check “a” or “b” is greater than 25
- Define the “printSummary ()” method
- Display the results.
- Calculate the “devA” and “devB” values
- Check the condition.
- Check “devA” is greater than 0
- Display the result
- Check “devA” is less than 0
- Display the result.
- Otherwise, display scoring difference
- Check “devB” is greater than 0
- Display the result.
- Check “devB” is less than 0
- Display the result
- Check “devA” is greater than 0
- Call the main method.

The program is to simulate a game of volleyball and investigate whether rally scoring reduces, magnifies, or has no effect on the relative advantage enjoyed by the better team.
Explanation of Solution
Program:
#import the header file
from random import random
#definition of main method
def main():
#call the method
printIntro()
#call the method and store it in the variables
probA, probB, n = getInputs()
winsA1, winsB1 = normalVolley(n, probA, probB)
winsA2, winsB2 = rallyVolley(n, probA, probB)
#call the method
printSummary(winsA1, winsB1, winsA2, winsB2, n)
#definition of "printIntro" method
def printIntro():
#display the statements
print("This program is designed to compare the difference between Normal")
print("and Rally scoring in a simulation of (n) games of Volleyball")
print("given a probability (a number between 0 and 1) that reflects the")
print("likelihood of a team winning the serve.")
#definition of "getInputs" method
def getInputs():
#get the player A wins a serve
a = eval(input("What is the prob. player A wins a serve? "))
#get the player B wins a serve
b = eval(input("What is the prob. player B wins a serve? "))
#get the input from the user
n = eval(input("How many games to simulate? "))
#return the values
return a, b, n
#definition of "normalVolley" method
def normalVolley(n, probA, probB):
#set the values
winsA = winsB = 0
#iterate until "n" value
for i in range(n):
#call the method and store it in the variables
scoreA, scoreB = simOneGame(probA, probB, n)
#check "scoreA" is greater than "scoreB"
if scoreA > scoreB:
#increment the value
winsA = winsA + 1
#otherwise
else:
#increment the value
winsB = winsB + 1
#return the results
return winsA, winsB
#definition of "simOneGame" method
def simOneGame(probA, probB, n):
#call the method
serving = findService(n)
#set the values
scoreA = 0
scoreB = 0
#check the condition
while not gameOver(scoreA, scoreB):
#check "serving" is equal to "A"
if serving == "A":
#check "random()" is less than "probA"
if random() < probA:
#increment the value
scoreA = scoreA + 1
#otherwise
else:
#set the value
serving = "B"
#check "serving" is equal to "B"
if serving == "B":
#check "random()" is less than "probB"
if random() < probB:
#increment the value
scoreB = scoreB + 1
#otherwise
else:
#set the value
serving = "A"
#return the result
return scoreA, scoreB
#definition of "findService" method
def findService(x):
#check the condition
if x % 2 == 0:
#return the value
return "A"
#otherwise
else:
#return the value
return "B"
#definition of "gameOver" method
def gameOver(a, b):
#check "a" or "b" is greater than 15
if a > 15 or b > 15:
#check "a-b" is greater than or equal to 2
if abs(a-b) >= 2:
#return the value
return True
#otherwise
else:
#return the value
return False
#otherwise
else:
#return the value
return False
#definition of "rallyVolley" method
def rallyVolley(n, probA, probB):
#set the values
winsA = winsB = 0
#iterate until "n" value
for i in range(n):
#call the method and store it in the variables
scoreA, scoreB = simOneGame(probA, probB, n)
#check "scoreA" is greater than "scoreB"
if scoreA > scoreB:
#increment the value
winsA = winsA + 1
#otherwise
else:
#increment the value
winsB = winsB + 1
#return the results
return winsA, winsB
#definition of "simOneGame" method
def simOneGame(probA, probB, n):
#call the method
serving = findService(n)
#set the values
scoreA = 0
scoreB = 0
#check the condition
while not gameOver(scoreA, scoreB):
#check "serving" is equal to "A"
if serving == "A":
#check "random()" is less than "probA"
if random() < probA:
#increment the value
scoreA = scoreA + 1
#otherwise
else:
#set the value
serving = "B"
#increment the value
scoreB = scoreB + 1
#check "serving" is equal to "B"
if serving == "B":
#check "random()" is less than "probB"
if random() < probB:
#increment the value
scoreB = scoreB + 1
#otherwise
else:
#set the value
serving = "A"
#increment the value
scoreA = scoreA + 1
#return the result
return scoreA, scoreB
#definition of "findService" method
def findService(x):
#check the condition
if x % 2 == 0:
#return the value
return "A"
#otherwise
else:
#return the value
return "B"
#definition of "gameOver" method
def gameOver(a, b):
#check "a" or "b" is greater than 15
if a > 25 or b > 25:
#check "a-b" is greater than or equal to 2
if abs(a-b) >= 2:
#return the value
return True
#otherwise
else:
#return the value
return False
#otherwise
else:
#return the value
return False
#definition of "printSummary" method
def printSummary(winsA1, winsB1, winsA2, winsB2, n):
#display the results
print("\nGames simulated: ", n)
print("Results for Normal Volleyball to 15, score on own serve.")
print("Wins for A: {0} ({1:0.1%})".format(winsA1, winsA1/n))
print("Wins for B: {0} ({1:0.1%})".format(winsB1, winsB1/n))
print()
print("Results for Rally Volleyball to 25, score on any serve.")
print("Wins for A: {0} ({1:0.1%})".format(winsA2, winsA2/n))
print("Wins for B: {0} ({1:0.1%})".format(winsB2, winsB2/n))
print()
#calculate the "devA" value
devA = (winsA2/n - winsA1/n)
#calculate the "devB" value
devB = (winsB2/n - winsB1/n)
#check the condition
if (winsA1 > winsB1) and (winsA2 > winsB2):
#check "devA" greater than 0
if devA > 0:
#display the result
print("Team A's advantage was magnified {0:0.1%} in their favor".format(devA))
print("during the rally scoring match.")
#check "devA" less than 0
elif devA < 0:
#display the result
print("Team A's advantage was reduced {0:0.1%} in their favor".format(abs(devA)))
print("during the rally scoring match.")
#otherwise
else:
#display the result
print("The scoring differences were not statistically significant.")
#check the condition
elif (winsB1 > winsA1) and (winsB2 > winsA2):
#check "devB" greater than 0
if devB > 0:
#display the result
print("Team B's advantage was magnified {0:0.1%} in their favor".format(devB))
print("during the rally scoring match.")
#check "devB" less than 0
elif devB < 0:
#display the result
print("Team B's advantage was reduced {0:0.1%} in their favor".format(abs(devB)))
print("during the rally scoring match.")
#otherwise
else:
#display the result
print("The scoring differences were not statistically significant.")
#otherwise
else:
#display the results
print("Neither team's advantage was statistically significant.")
print("If the initial probabilities were near equal, it is impossible to")
print("derive significance from the data.")
print("Try a larger sample size.")
if __name__ == '__main__': main()
Output:
This program is designed to compare the difference between Normal
and Rally scoring in a simulation of (n) games of Volleyball
given a probability (a number between 0 and 1) that reflects the
likelihood of a team winning the serve.
What is the prob. player A wins a serve? 0.65
What is the prob. player B wins a serve? 0.6
How many games to simulate? 5000
Games simulated: 5000
Results for Normal Volleyball to 15, score on own serve.
Wins for A: 3312 (66.2%)
Wins for B: 1688 (33.8%)
Results for Rally Volleyball to 25, score on any serve.
Wins for A: 3325 (66.5%)
Wins for B: 1675 (33.5%)
Team A's advantage was magnified 0.3% in their favor
during the rally scoring match.
Want to see more full solutions like this?
Chapter 9 Solutions
Python Programming: An Introduction to Computer Science, 3rd Ed.
- This week we will be building a regression model conceptually for our discussion assignment. Consider your current workplace (or previous/future workplace if not currently working) and answer the following set of questions. Expand where needed to help others understand your thinking: What is the most important factor (variable) that needs to be predicted accurately at work? Why? Justify its selection as your dependent variable.arrow_forwardAccording to best practices, you should always make a copy of a config file and add a date to filename before editing? Explain why this should be done and what could be the pitfalls of not doing it.arrow_forwardIn completing this report, you may be required to rely heavily on principles relevant, for example, the Work System, Managerial and Functional Levels, Information and International Systems, and Security. apply Problem Solving Techniques (Think Outside The Box) when completing. should reflect relevance, clarity, and organisation based on research. Your research must be demonstrated by Details from the scenario to support your analysis, Theories from your readings, Three or more scholarly references are required from books, UWIlinc, etc, in-text or narrated citations of at least four (4) references. “Implementation of an Integrated Inventory Management System at Green Fields Manufacturing” Green Fields Manufacturing is a mid-sized company specialising in eco-friendly home and garden products. In recent years, growing demand has exposed the limitations of their fragmented processes and outdated systems. Different departments manage production schedules, raw material requirements, and…arrow_forward
- 1. Create a Book record that implements the Comparable interface, comparing the Book objects by year - title: String > - author: String - year: int Book + compareTo(other Book: Book): int + toString(): String Submit your source code on Canvas (Copy your code to text box or upload.java file) > Comparable 2. Create a main method in Book record. 1) In the main method, create an array of 2 objects of Book with your choice of title, author, and year. 2) Sort the array by year 3) Print the object. Override the toString in Book to match the example output: @Javadoc Declaration Console X Properties Book [Java Application] /Users/kuan/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspo [Book: year=1901, Book: year=2010]arrow_forwardQ5-The efficiency of a 200 KVA, single phase transformer is 98% when operating at full load 0.8 lagging p.f. the iron losses in the transformer is 2000 watt. Calculate the i) Full load copper losses ii) half load copper losses and efficiency at half load. Ans: 1265.306 watt, 97.186%arrow_forward2. Consider the following pseudocode for partition: function partition (A,L,R) pivotkey = A [R] t = L for i L to R-1 inclusive: if A[i] A[i] t = t + 1 end if end for A [t] A[R] return t end function Suppose we call partition (A,0,5) on A=[10,1,9,2,8,5]. Show the state of the list at the indicated instances. Initial A After i=0 ends After 1 ends After i 2 ends After i = 3 ends After i = 4 ends After final swap 10 19 285 [12 pts]arrow_forward
- .NET Interactive Solving Sudoku using Grover's Algorithm We will now solve a simple problem using Grover's algorithm, for which we do not necessarily know the solution beforehand. Our problem is a 2x2 binary sudoku, which in our case has two simple rules: •No column may contain the same value twice •No row may contain the same value twice If we assign each square in our sudoku to a variable like so: 1 V V₁ V3 V2 we want our circuit to output a solution to this sudoku. Note that, while this approach of using Grover's algorithm to solve this problem is not practical (you can probably find the solution in your head!), the purpose of this example is to demonstrate the conversion of classical decision problems into oracles for Grover's algorithm. Turning the Problem into a Circuit We want to create an oracle that will help us solve this problem, and we will start by creating a circuit that identifies a correct solution, we simply need to create a classical function on a quantum circuit that…arrow_forwardusing r languagearrow_forward8. Cash RegisterThis exercise assumes you have created the RetailItem class for Programming Exercise 5. Create a CashRegister class that can be used with the RetailItem class. The CashRegister class should be able to internally keep a list of RetailItem objects. The class should have the following methods: A method named purchase_item that accepts a RetailItem object as an argument. Each time the purchase_item method is called, the RetailItem object that is passed as an argument should be added to the list. A method named get_total that returns the total price of all the RetailItem objects stored in the CashRegister object’s internal list. A method named show_items that displays data about the RetailItem objects stored in the CashRegister object’s internal list. A method named clear that should clear the CashRegister object’s internal list. Demonstrate the CashRegister class in a program that allows the user to select several items for purchase. When the user is ready to check out, the…arrow_forward
- 5. RetailItem ClassWrite a class named RetailItem that holds data about an item in a retail store. The class should store the following data in attributes: item description, units in inventory, and price. Once you have written the class, write a program that creates three RetailItem objects and stores the following data in them: Description Units in Inventory PriceItem #1 Jacket 12 59.95Item #2 Designer Jeans 40 34.95Item #3 Shirt 20 24.95arrow_forwardFind the Error: class Information: def __init__(self, name, address, age, phone_number): self.__name = name self.__address = address self.__age = age self.__phone_number = phone_number def main(): my_info = Information('John Doe','111 My Street', \ '555-555-1281')arrow_forwardFind the Error: class Pet def __init__(self, name, animal_type, age) self.__name = name; self.__animal_type = animal_type self.__age = age def set_name(self, name) self.__name = name def set_animal_type(self, animal_type) self.__animal_type = animal_typearrow_forward
- C++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology PtrOperations Research : Applications and AlgorithmsComputer ScienceISBN:9780534380588Author:Wayne L. WinstonPublisher:Brooks ColeA+ Guide To It Technical SupportComputer ScienceISBN:9780357108291Author:ANDREWS, Jean.Publisher:Cengage,
- Principles of Information Systems (MindTap Course...Computer ScienceISBN:9781285867168Author:Ralph Stair, George ReynoldsPublisher:Cengage LearningSystems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage LearningProgramming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:Cengage




