3
\$\begingroup\$

I am not 100% sure that I am using the random.seed correctly for this assignment, or if there is a more efficient way to write the code. Any feedback is appreciated.

Assignment Description: Simulate rolling 2 die one hundred times. Keep track of the total of the two die. Print a histogram in which the total number of times the dice rolls equals each possible value is displayed by printing a character, such as *, that number of times

import random
random.seed(2)
# declaring an array to count the occurrences
a= [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# looping for 100 times and saving the count in array
for i in range(100):
 x = random.randint(1,6)
 y = random.randint(1,6)
 a[x+y] = a[x+y] + 1
# printing histogram 
for i in range(2, 13):
 print(str(i).rjust(2)+"s: ","*"*a[i])
Toby Speight
87.7k14 gold badges104 silver badges325 bronze badges
asked Nov 20, 2018 at 10:01
\$\endgroup\$
0

1 Answer 1

8
\$\begingroup\$

Various small comments:

  • you can write a[x+y] += 1
  • you always call random.seed with the same input so you'll always have the same output. You could call it with no value so that it uses the time (which is different from one run to another).
  • instead of having an explicit 13 at the end of your code, you could use len(a)
  • you could use a constant to store 100 to avoid having a magic number in the middle of your code
  • you could use a constant to store the number of faces per dice
  • you could initialise a by using list multiplication. In particular, you could reuse the constant introduced just before.

At this stage, you have:

NB_ITER = 100
DICE_MAX_NUM = 6
random.seed()
# declaring an array to count the occurrences
a= [0] * (2 * DICE_MAX_NUM + 1)
# looping and saving the count in array
for i in range(NB_ITER):
 val = random.randint(1, DICE_MAX_NUM) + random.randint(1, DICE_MAX_NUM)
 a[val] += 1
# printing histogram
for i in range(2, len(a)):
 print(str(i).rjust(2) + "s: ", "*" * a[i])

To be continued but you could use collections.Counter...

answered Nov 20, 2018 at 10:50
\$\endgroup\$
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.