首页 > > 详细

讲解Python、Python编程解析、讲解PYTHON HOMEWORK程序

PYTHON HOMEWORK

Instructions: Please note that you must work by yourself! You will submit two les on Gau-
choSpace: (1) clear and concise explanations, graphics (if any), and results in PDF format (worth
40 points in total) and (2) your Python code in .py format (10 points). Note that if the grader
nds identical copies or very similar les, the grader cannot and will not grade them.
For Question #1, be sure to show all of your work! You may either (a) write at least a couple
sentences explaining your reasoning or (b) annotate your math work with brief explanations. Please
label any random variables or events that your use.
The children’s game Chutes and Ladders is based on an ancient Indian game called Snakes and
Ladders (see https://en.wikipedia.org/wiki/Snakes_and_Ladders). The game is played on a
100-square board. Each player has a token and takes turns rolling a six-sided die and moving their
token by the corresponding number of squares. If a player lands on a ladder, they immediately
move up the ladder to a higher-numbered square. If they move to a chute, or snake, they drop
down to a lower-numbered square. The nishing square 100 must be reached by an exact roll of
the die (or by landing on square 80 whose ladder climbs to the nish). The rst player to land on
square 100 wins.
The game is a Markov chain since the player’s position only depends on their previous position and
the roll of the die. The chain has 101 states as the game starts will all players o the board (state
0).
1. (10 points) (Without Python) The board for a modi ed Snakes and Ladder game is shown in
Figure 1. The game is played with a tetrahedron (4-sided) die.
Figure 1: Modi ed Snakes and Ladder game board
(a) Find the expected length of the game. That is, what is the average number of plays/moves
needed to read the nish.
(b) Assume that your friend Loki is on square 6. Find the probability that Loki will nd
himself on square 3 before nishing the game.
2. (30 points) (With Python) In this Python exercise, you will be estimating the average number
of plays/moves until the game is nished and the probability that a person starting at square
6 will nd themselves on square 3 before nishing the game. Be sure to annotate your code
with short explanations of what you are doing (worth 10 points).
Suppose (as above) that we are playing Snakes and Ladders on a modi ed game board.
(a) Simulate playing 10,000 games. Compute the average number of moves until the game is
nished. Use the print function to print your answer. Be sure to label your results. For
example,
print(’The average number of moves before a game is finished is %s.’
% expectedNumberOfMoves)
(b) Simulate playing 10,000 games, but this time, start each game from square 6. Compute
the probability that a person starting at square 6 will nd themselves on square 3 before
nishing the game. Use the print function to print your answer.
(c) Take a screenshot showing your code and your results together (e.g. side by side).
Python Code Hints
numpy.linalg.solve(A,b)
will solve the matrix equation Ax = b.
numpy.identity(n)
will give you the n n identity matrix.
numpy.matrix
will return a matrix from an array-like object or from a string of data. For example,
a = numpy.matrix([[1, 2], [3, 4]])
will give you the matrix
1 2
3 4

. It has certain special operators, such as * (matrix
multiplication) and ** (matrix power).
Change a matrix to a list via
nameOfMyMatrix.tolist()[0]
One way to make a bar graph is to use the library matplotlib.
matplotlib.pyplot.bar( x, height = y, align=’center’, alpha=0.5, color=’g’)
produces a bar graph with x-axis described by x and y axis described by y. Both x and y
are lists here.
matplotlib.pyplot.ylabel(’Label Me’)
creates a label for the y axis called Label Me.
matplotlib.pyplot.title(’Title Me’)
creates a title for the graph called Title Me.
matplotlib.pyplot.xticks(x, listOfNames)
will label the x axis tick marks with a list of names (e.g. Port numbers).
Page 2
matplotlib.pyplot.show()
shows the graph/plot.
numpy.random.choice( alist, p = alist_prob )
will pick one element from the set alist using the probability distribution alist prob.
When Python indexes a list, the index of the list starts at 0. That is, to access the rst
entry of a list like a=[7, 8, 9], we need to write a[0].
alist = [1, 4, 7]
alist.append( 3 )
will add 3 to the end of your list. So, alist = [1, 4, 7, 3].
set()
creates a set { an unordered collections of unique elements.
aSet = set( [’Stark’, ’Lannister’, ’Greyjoy’] )
aSet.add( ’Baratheon’ )
will add Baratheon to the set aSet.
alist = [1, 4, 7, 1, 4, 4]
alist.count( 4 )
returns 3, the number of times 4 occurs in the list alist.
len (alist)
return the length (the number of items) of alist. alist can be a sequence (such as a list)
or a collection (like a set).
You may need to use a for loop or while statement in you code. See
http://www.openbookproject.net/books/bpp4awd/ch04.html for examples.
If you are using Python 2, you’ll need to import division from Python 3 so that it acts
like Python 3 when using the / symbol in your calculations. If you are using Python 2,
write at the top of your py le,
from __future__ import division
You’re importing the future!

联系我们
  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp
热点标签

联系我们 - QQ: 99515681 微信:codinghelp
程序辅导网!