Python homework

D'Arcy Cain darcy at VybeNetworks.com
Wed Dec 6 05:20:26 EST 2017


On 12/05/2017 07:33 PM, nick.martinez2--- via Python-list wrote:
> I have a question on my homework. My homework is to write a program in which the computer simulates the rolling of a die 50
> times and then prints
> (i). the most frequent side of the die
> (ii). the average die value of all rolls.
> I wrote the program so it says the most frequent number out of all the rolls for example (12,4,6,14,10,4) and will print out "14" instead of 4 like I need.

How did you come up with 4?  I come up with 3.36 with those numbers.

> This is what I have so far:
> import random
> 
> def rollDie(number):
>      rolls = [0] * 6

For a small efficiency use "[0] * 7".  See below for reason.

>      for i in range(0, number):
>          roll=int(random.randint(1,6))
>          rolls[roll - 1] += 1

Use "rolls[roll] += 1" here.  You save one arithmetic instruction each 
time through the loop.  Fifty times isn't much saving but imagine fifty 
million.

>      return rolls

return rolls[1:].  No matter how many rolls you only need to do the 
slice once.  However, you really need a lot of iterations before it 
really affects the total run time.

You need one more thing though.  Create a new variable called "total" 
and set it to 0.0.  Add "total += roll" to your loop.  your return 
statement is now "return rolls[1:], total/number".

> 
> if __name__ == "__main__":
>      result = rollDie(50)

Now "result, average = ..."

>      print (result)
>      print(max(result))

This is why you get 14.  The maximum number of rolls for any one side is 
14 for side 4.  Is that where you got "4"?

-- 
D'Arcy J.M. Cain
Vybe Networks Inc.
http://www.VybeNetworks.com/
IM:darcy at Vex.Net VoIP: sip:darcy at VybeNetworks.com



More information about the Python-list mailing list