I assign the contents of one variable to another variable and then append
to that variable. The original variable is changed.
for u in oddone:
thishand = fourofkind
print " append ",u," to ",thishand
thishand.append(u)
Hands.append(thishand)
after this, fourofkind is changed.
What am I doing wrong?
Tom Dean
Complete code:
print "Poker and probability"
print "A card in a poker deck is characterized by a suit (hearts, diamonds,"
print "spades, or clubs) and a value (2, 3, ..., 10, jack, queen, king,
ace)."
print "The game is played with a full deck, which consists of the Cartesian"
print "product of the set of suits and the set of values:"
print " Cards = Suits X Values = {s,v | s in Suites and v in Values"
Suits = Set(["Hearts", "Diamonds", "Spades", "Clubs"])
Values = Set(["2", "3", "4", "5", "6", "7", "8", "9", "10",
"Jack", "Queen", "King", "Ace"])
Cards = cartesian_product([Values, Suits])
Suits.cardinality()
Values.cardinality()
Cards.cardinality()
Cards.random_element()
Set([Cards.random_element(), Cards.random_element()])
Hands = Subsets(Cards, 5)
Hands.random_element()
binomial(52,5)
Hands.cardinality()
print "Construct a set of all flushes"
Flushes = cartesian_product([Subsets(Values, 5), Suits])
Flushes.cardinality()
print "The probability of obtaining a flush when drawing a hand at random"
print "is therefore:"
Flushes.cardinality() / Hands.cardinality()
1000.0 * Flushes.cardinality() / Hands.cardinality()
def is_flush(hand):
return len(set(suit for (val, suit) in hand)) == 1
print "Count the number of flushes in",
n = 10000
nflush = 0
for i in range(n): # long time
hand = Hands.random_element()
if is_flush(hand):
nflush += 1
print n, "hands: ",nflush # random
print "A hand containing four cards of the same value is called a four of a"
print "kind. Construct the set of four of a kind hands (Hint: use
Arrangements"
print "to choose a pair of distinct values at random, then choose a suit
for"
print "the first value). Calculate the number of four of a kind hand, list"
print "them, and then determine the probability of obtaining a four of a"
print "kind when drawing a hand at random."
print
print "Example, four Kings"
print "King Hearts",
print " King Clubs",
print " King Spades",
print " King Diamonds",
print " 2 Hearts"
print "King Hearts",
print " King Clubs",
print " King Spades",
print " King Diamonds",
print " 2 Clubs"
print "King Hearts",
print " King Clubs",
print " King Spades",
print " King Diamonds",
print " 2 Spades"
print "King Hearts",
print " King Clubs",
print " King Spades",
print " King Diamonds",
print " 2 Diamonds"
tmp = Arrangements(Values,2).list()
var('Hands, fourof, oddone, thishand,fourofkind')
Hands = []
for s in tmp:
print "--> ",s
fourof = cartesian_product([{s[0]},Suits])
oddone = cartesian_product([{s[1]},Suits])
fourofkind = []
for t in fourof:
fourofkind.append(t)
print " fourofkind ",fourofkind
for u in oddone:
thishand = fourofkind
print " append ",u," to ",thishand
thishand.append(u)
Hands.append(thishand)
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.