## Spades Humor

- Joe Andrews
- Active Poster
**Posts:**412**Joined:**Wed Jan 14, 2004 10:48 pm-
**Contact:**

### Spades Humor

Amazing! It has been a whole month since someone has posted here in the Spades Forum. In any case, here is a copy of a post about Spades which appreared as a Blog on another site:

Regarding the random deals, Players need to move on. Here are two concluding comments-

WINNERS - If you are fortunate enough to win games of Spades without really trying because you had great hands, lots of trumps, lots of Aces, easy nils, etc. , tell your opponents "GGA", when the game is over, and move on. (and smile and thank the card "Gods".)

WINNERS - If you are better than your opponents, and you are croaking them, be gracious, and tell them "they played well" or that you were "lucky". You might even want to consider tanking or throwing a hand or two if you are blowing their doors off by 300 or more points.

LOSERS - If you think that you got rooked or shafted becuase the cards were stacked against you and the opponents had better hands, lots of trump, lots of Aces, easy Nils, etc., blame it on the Devil!

LOSERS - If the opponents are better than you and YOU were clearly outplayed, and you got pulverized, you can blame that on the Devil, too.

LOSERS - But, don't whine and moan like some wounded animal on the Serengheti that has been eviscerated by a pride of lions, or act like the legendary Scotsman, Wallace, in the movie "Braveheart", as they ripped his guts out! Accept your loss, and type in "GGA". After all, you just could not cut it against superior opposition.

And NEVER blame it on the Random deal generator.

It's only a game. Maybe when they introduce Poker Cash like they do on TV, then you can complain.

Now, who's ready for some "fun" spades?

Regarding the random deals, Players need to move on. Here are two concluding comments-

WINNERS - If you are fortunate enough to win games of Spades without really trying because you had great hands, lots of trumps, lots of Aces, easy nils, etc. , tell your opponents "GGA", when the game is over, and move on. (and smile and thank the card "Gods".)

WINNERS - If you are better than your opponents, and you are croaking them, be gracious, and tell them "they played well" or that you were "lucky". You might even want to consider tanking or throwing a hand or two if you are blowing their doors off by 300 or more points.

LOSERS - If you think that you got rooked or shafted becuase the cards were stacked against you and the opponents had better hands, lots of trump, lots of Aces, easy Nils, etc., blame it on the Devil!

LOSERS - If the opponents are better than you and YOU were clearly outplayed, and you got pulverized, you can blame that on the Devil, too.

LOSERS - But, don't whine and moan like some wounded animal on the Serengheti that has been eviscerated by a pride of lions, or act like the legendary Scotsman, Wallace, in the movie "Braveheart", as they ripped his guts out! Accept your loss, and type in "GGA". After all, you just could not cut it against superior opposition.

And NEVER blame it on the Random deal generator.

It's only a game. Maybe when they introduce Poker Cash like they do on TV, then you can complain.

Now, who's ready for some "fun" spades?

### Re: Spades Humor

Sounds like admin nudged you a bit to post about this...

Sorry Joe, the opinions on the "random" deals is not going away.

And from your post, it sounds like you are not understanding the situation.

We do know when we are beat by skill and not cards. AND we DO say GG and move on.

The venting is done here in the forum until the posts are erased. We are intelligent

enough to not complain in games or to opponents because it has nothing to do with them.

The dealing program is a big problem here along with the dice rolls in backgammon - here online and on xbox. Many people have quit playing because of it. People who quit playing quit buying any new games. We like Hardwood games aside from this one issue. Why would someone buy a new game when the old games have not been fixed yet? So ignoring this situation is bad for seller and for their customers.

Sorry Joe, the opinions on the "random" deals is not going away.

And from your post, it sounds like you are not understanding the situation.

We do know when we are beat by skill and not cards. AND we DO say GG and move on.

The venting is done here in the forum until the posts are erased. We are intelligent

enough to not complain in games or to opponents because it has nothing to do with them.

The dealing program is a big problem here along with the dice rolls in backgammon - here online and on xbox. Many people have quit playing because of it. People who quit playing quit buying any new games. We like Hardwood games aside from this one issue. Why would someone buy a new game when the old games have not been fixed yet? So ignoring this situation is bad for seller and for their customers.

- Joe Andrews
- Active Poster
**Posts:**412**Joined:**Wed Jan 14, 2004 10:48 pm-
**Contact:**

### Re: Spades Humor

Hi there.

FYI, HW Administration did not ask me to write my previous post. I like this site, and most players here are nice people. I do not get 'ballistic' if the deals for a given game are one sided for the opponents; nor do I brag or chortle if the cards in my favor. As in "live" play, the deals are still random. Play enough games and it will even out. I know it can be frustrating to lose with bad cards. The only real solution is DUPLICATE SPADES, and that is still many years away.

Here is how most sites create deals (CALLED THE 'RDG' OR - RANDOM DEAL GENERATOR).

THE MERSENNE TWISTER -

The Mersenne twister is a pseudorandom number generator developed in 1997 by Makoto Matsumoto and Takuji Nishimura (Japan) that is based on a matrix linear recurrence over a finite binary field F2. It provides for fast generation of very high-quality pseudorandom numbers, having been designed specifically to rectify many of the flaws found in older algorithms.

Its name derives from the fact that period length is chosen to be a Mersenne prime. There are at least two common variants of the algorithm, differing only in the size of the Mersenne primes used. The newer and more commonly used one is the Mersenne Twister MT19937, with 32-bit word length. There is also a variant with 64-bit word length, MT19937-64, which generates a different sequence.

Application

Unlike Blum Blum Shub, the algorithm in its native form is not suitable for cryptography. Observing a sufficient number of iterates (624 in the case of MT19937) allows one to predict all future iterates.

Another issue is that it can take a long time to turn a non-random initial state into output that passes randomness tests, due to its size. A small lagged Fibonacci generator or linear congruential generator gets started much quicker and usually is used to seed the Mersenne Twister. If only a few numbers are required and standards aren't high it is simpler to use the seed generator. But the Mersenne Twister will still work.

For many other applications, however, the Mersenne twister is quickly becoming the pseudorandom number generator of choice. Since the library is portable, freely available and quickly generates good quality pseudorandom numbers it is rarely a bad choice.

It is designed with Monte Carlo simulations and other statistical simulations in mind. Researchers primarily want good quality numbers but also benefit from its speed and portability.

Advantages

The commonly used variant of Mersenne Twister, MT19937 has the following desirable properties:

It was designed to have a period of 219937 − 1 (the creators of the algorithm proved this property). In practice, there is little reason to use larger ones, as most applications do not require 219937 unique combinations (219937 is approximately 4.315425 × 106001).

It has a very high order of dimensional equidistribution (see linear congruential generator). This implies that there is negligible serial correlation between successive values in the output sequence.

It passes numerous tests for statistical randomness, including the Diehard tests. It passes most, but not all, of the even more stringent TestU01 Crush randomness tests.

Criticism

The Mersenne Twister algorithm has received some criticism in the computer science field, notably by George Marsaglia. These critics claim that while it is good at generating random numbers, it is not very elegant and is overly complex to implement. Marsaglia has provided several examples of random number generators that are less complex yet which he claims provide significantly larger periods. For example, a simple complementary-multiply-with-carry generator can have a 1033000 longer period, be significantly faster, and maintain better or equal randomness..

Algorithmic detail

The Mersenne Twister algorithm is a twisted generalised feedback shift register[4] (twisted GFSR, or TGFSR) of rational normal form (TGFSR(R)), with state bit reflection and tempering. It is characterized by the following quantities:

w: word size (in number of bits)

n: degree of recurrence

m: middle word, or the number of parallel sequences, 1 ≤ m ≤ n

r: separation point of one word, or the number of bits of the lower bitmask, 0 ≤ r ≤ w - 1

a: coefficients of the rational normal form twist matrix

b, c: TGFSR(R) tempering bitmasks

s, t: TGFSR(R) tempering bit shifts

u, l: additional Mersenne Twister tempering bit shifts

with the restriction that 2nw − r − 1 is a Mersenne prime. This choice simplifies the primitivity test and k-distribution test that are needed in the parameter search.

For a word x with w bit width, it is expressed as the recurrence relation

with | as the bitwise or and ⊕ as the bitwise exclusive or (XOR), xu, xl being x with upper and lower bitmasks applied. The twist transformation A is defined in rational normal form

with In − 1 as the (n − 1) × (n − 1) identity matrix (and in contrast to normal matrix multiplication, bitwise XOR replaces addition). The rational normal form has the benefit that it can be efficiently expressed as

where

In order to achieve the 2nw − r − 1 theoretical upper limit of the period in a TGFSR, φB(t) must be a primitive polynomial, φB(t) being the characteristic polynomial of

The twist transformation improves the classical GFSR with the following key properties:

Period reaches the theoretical upper limit 2nw − r − 1 (except if initialized with 0)

Equidistribution in n dimensions (e.g. linear congruential generators can at best manage reasonable distribution in 5 dimensions)

As like TGFSR(R), the Mersenne Twister is cascaded with a tempering transform to compensate for the reduced dimensionality of equidistribution (because of the choice of A being in the rational normal form), which is equivalent to the transformation A = R → A = T−1RT, T invertible. The tempering is defined in the case of Mersenne Twister as

y := x ⊕ (x >> u)

y := :y ⊕ ((y << s) & b)

y := :y ⊕ ((y << t) & c)

z := y ⊕ (y >> l)

with <<, >> as the bitwise left and right shifts, and & as the bitwise and. The first and last transforms are added in order to improve lower bit equidistribution. From the property of TGFSR, is required to reach the upper bound of equidistribution for the upper bits.

The coefficients for MT19937 are:

(w, n, m, r) = (32, 624, 397, 31)

a = 9908B0DF16

u = 11

(s, b) = (7, 9D2C568016)

(t, c) = (15, EFC6000016)

l = 18

Pseudocode

The following generates uniformly 32-bit integers in the range [0, 232 − 1] with the MT19937 algorithm:

// Create a length 624 array to store the state of the generator

int[0..623] MT

int index = 0

// Initialize the generator from a seed

function initializeGenerator(int seed) {

MT[0] := seed

for i from 1 to 623 { // loop over each other element

MT

FYI, HW Administration did not ask me to write my previous post. I like this site, and most players here are nice people. I do not get 'ballistic' if the deals for a given game are one sided for the opponents; nor do I brag or chortle if the cards in my favor. As in "live" play, the deals are still random. Play enough games and it will even out. I know it can be frustrating to lose with bad cards. The only real solution is DUPLICATE SPADES, and that is still many years away.

Here is how most sites create deals (CALLED THE 'RDG' OR - RANDOM DEAL GENERATOR).

THE MERSENNE TWISTER -

The Mersenne twister is a pseudorandom number generator developed in 1997 by Makoto Matsumoto and Takuji Nishimura (Japan) that is based on a matrix linear recurrence over a finite binary field F2. It provides for fast generation of very high-quality pseudorandom numbers, having been designed specifically to rectify many of the flaws found in older algorithms.

Its name derives from the fact that period length is chosen to be a Mersenne prime. There are at least two common variants of the algorithm, differing only in the size of the Mersenne primes used. The newer and more commonly used one is the Mersenne Twister MT19937, with 32-bit word length. There is also a variant with 64-bit word length, MT19937-64, which generates a different sequence.

Application

Unlike Blum Blum Shub, the algorithm in its native form is not suitable for cryptography. Observing a sufficient number of iterates (624 in the case of MT19937) allows one to predict all future iterates.

Another issue is that it can take a long time to turn a non-random initial state into output that passes randomness tests, due to its size. A small lagged Fibonacci generator or linear congruential generator gets started much quicker and usually is used to seed the Mersenne Twister. If only a few numbers are required and standards aren't high it is simpler to use the seed generator. But the Mersenne Twister will still work.

For many other applications, however, the Mersenne twister is quickly becoming the pseudorandom number generator of choice. Since the library is portable, freely available and quickly generates good quality pseudorandom numbers it is rarely a bad choice.

It is designed with Monte Carlo simulations and other statistical simulations in mind. Researchers primarily want good quality numbers but also benefit from its speed and portability.

Advantages

The commonly used variant of Mersenne Twister, MT19937 has the following desirable properties:

It was designed to have a period of 219937 − 1 (the creators of the algorithm proved this property). In practice, there is little reason to use larger ones, as most applications do not require 219937 unique combinations (219937 is approximately 4.315425 × 106001).

It has a very high order of dimensional equidistribution (see linear congruential generator). This implies that there is negligible serial correlation between successive values in the output sequence.

It passes numerous tests for statistical randomness, including the Diehard tests. It passes most, but not all, of the even more stringent TestU01 Crush randomness tests.

Criticism

The Mersenne Twister algorithm has received some criticism in the computer science field, notably by George Marsaglia. These critics claim that while it is good at generating random numbers, it is not very elegant and is overly complex to implement. Marsaglia has provided several examples of random number generators that are less complex yet which he claims provide significantly larger periods. For example, a simple complementary-multiply-with-carry generator can have a 1033000 longer period, be significantly faster, and maintain better or equal randomness..

Algorithmic detail

The Mersenne Twister algorithm is a twisted generalised feedback shift register[4] (twisted GFSR, or TGFSR) of rational normal form (TGFSR(R)), with state bit reflection and tempering. It is characterized by the following quantities:

w: word size (in number of bits)

n: degree of recurrence

m: middle word, or the number of parallel sequences, 1 ≤ m ≤ n

r: separation point of one word, or the number of bits of the lower bitmask, 0 ≤ r ≤ w - 1

a: coefficients of the rational normal form twist matrix

b, c: TGFSR(R) tempering bitmasks

s, t: TGFSR(R) tempering bit shifts

u, l: additional Mersenne Twister tempering bit shifts

with the restriction that 2nw − r − 1 is a Mersenne prime. This choice simplifies the primitivity test and k-distribution test that are needed in the parameter search.

For a word x with w bit width, it is expressed as the recurrence relation

with | as the bitwise or and ⊕ as the bitwise exclusive or (XOR), xu, xl being x with upper and lower bitmasks applied. The twist transformation A is defined in rational normal form

with In − 1 as the (n − 1) × (n − 1) identity matrix (and in contrast to normal matrix multiplication, bitwise XOR replaces addition). The rational normal form has the benefit that it can be efficiently expressed as

where

In order to achieve the 2nw − r − 1 theoretical upper limit of the period in a TGFSR, φB(t) must be a primitive polynomial, φB(t) being the characteristic polynomial of

The twist transformation improves the classical GFSR with the following key properties:

Period reaches the theoretical upper limit 2nw − r − 1 (except if initialized with 0)

Equidistribution in n dimensions (e.g. linear congruential generators can at best manage reasonable distribution in 5 dimensions)

As like TGFSR(R), the Mersenne Twister is cascaded with a tempering transform to compensate for the reduced dimensionality of equidistribution (because of the choice of A being in the rational normal form), which is equivalent to the transformation A = R → A = T−1RT, T invertible. The tempering is defined in the case of Mersenne Twister as

y := x ⊕ (x >> u)

y := :y ⊕ ((y << s) & b)

y := :y ⊕ ((y << t) & c)

z := y ⊕ (y >> l)

with <<, >> as the bitwise left and right shifts, and & as the bitwise and. The first and last transforms are added in order to improve lower bit equidistribution. From the property of TGFSR, is required to reach the upper bound of equidistribution for the upper bits.

The coefficients for MT19937 are:

(w, n, m, r) = (32, 624, 397, 31)

a = 9908B0DF16

u = 11

(s, b) = (7, 9D2C568016)

(t, c) = (15, EFC6000016)

l = 18

Pseudocode

The following generates uniformly 32-bit integers in the range [0, 232 − 1] with the MT19937 algorithm:

// Create a length 624 array to store the state of the generator

int[0..623] MT

int index = 0

// Initialize the generator from a seed

function initializeGenerator(int seed) {

MT[0] := seed

for i from 1 to 623 { // loop over each other element

MT

*:= last 32 bits of(1812433253 * (MT[i-1] xor (right shift by 30 bits(MT[i-1]))) + i) // 0x6c078965*

}

}

// Extract a tempered pseudorandom number based on the index-th value,

// calling generateNumbers() every 624 numbers

function extractNumber() {

if index == 0 {

generateNumbers()

}

int y := MT[index]

y := y xor (right shift by 11 bits(y))

y := y xor (left shift by 7 bits(y) and (2636928640)) // 0x9d2c5680

y := y xor (left shift by 15 bits(y) and (4022730752)) // 0xefc60000

y := y xor (right shift by 18 bits(y))

index := (index + 1) mod 624

return y

}

// Generate an array of 624 untempered numbers

function generateNumbers() {

for i from 0 to 623 {

int y := 32nd bit of(MT}

}

// Extract a tempered pseudorandom number based on the index-th value,

// calling generateNumbers() every 624 numbers

function extractNumber() {

if index == 0 {

generateNumbers()

}

int y := MT[index]

y := y xor (right shift by 11 bits(y))

y := y xor (left shift by 7 bits(y) and (2636928640)) // 0x9d2c5680

y := y xor (left shift by 15 bits(y) and (4022730752)) // 0xefc60000

y := y xor (right shift by 18 bits(y))

index := (index + 1) mod 624

return y

}

// Generate an array of 624 untempered numbers

function generateNumbers() {

for i from 0 to 623 {

int y := 32nd bit of(MT

*) + last 31 bits of(MT[(i+1) mod 624])*

MTMT

*:= MT[(i + 397) mod 624] xor (right shift by 1 bit(y))*

if (y mod 2) == 1 { // y is odd

MTif (y mod 2) == 1 { // y is odd

MT

*:= MT**xor (2567483615) // 0x9908b0df*

THERE YOU HAVE IT! HOW DEALS ARE GENERATED ON MOST SITES...

THERE YOU HAVE IT! HOW DEALS ARE GENERATED ON MOST SITES...

### Re: Spades Humor

Waking up in the morning, finding out I am alive, able to breathe and able to enjoy every second of whatever life brings, is such a joy.

Watching kids and hubby wake up in time, have breakfast, get ready blablabla and start their day with the right feet too, is such a joy.

Having my first coffee oh wow, what a joy.

Grabbing the newspaper, turning on puter and checking emails and stuff, oh joy !

Opening hw forum and checking for new messages and finding the same old last message for over a month, oh gosh what a bummer, the day was being so good so far!!!

Thanks Joe, for a bran new post, full of positive attitude. Joke or not, it's so true, we spend our lives complaining and moaning over stuff we don't like, stuff we feel should have had a different ending, and searching for people to blame to avoid admitting we are not as good as we would like to be. What a waste of time, instead of searching for others to blame, we should spend our time improoving ourselves in whatever areas we wish to improove, in order to feel better about ourselves.

What a great feeling doing our best and trying harder each day until we realize it was way worth it and we were able to do whatever we had to do , to be better at something.

What a nice feeling being able to smile after a game is over, and say gga, even if we lost big time and our rating went poop.

Says so much about a person, such a refreshing experience to play against someone who is gracious enough to say gga and even smile and joke, after losing bad. That's the kind of oponents I wanna have all day. I want them to lose with dignity and I want them to be gracious when they kick my butt too. What a nice feeling to lose against someone and think, oh I am so glad he won, he sure deserves it, I dont even mind losing against him, such a nice person.

Being gracious at all time, win or lose, refreshing !!!

Thanks for a nice post, Joe, and thanks for giving me the chance to enjoy my coffee in the morning with a new post, please do keep them comming, I enjoy reading you very much when your posts are not full of numbers and percentages like the reply you just gave. I leave those for the ones that have the patience for them and I stick with the more philosophical ones for myself. I enjoy them and they make me smile as I grab my first cup of coffee.

Have a super day and don't forget to smile !!! If you are reading this post, smile, it means you are ALIVE !!! Make the best of it. Cheers!

- Primal Instincts
- Grand Master
**Posts:**3698**Joined:**Fri Aug 05, 2005 12:40 pm**Location:**Deep in The Mountains/Wash State/Wyoming

### Re: Spades Humor

Ya what Sybil said............

The Wilderness has answers to questions man has not yet learned to ask.

- Dust In The Wind
- Guide
**Posts:**5344**Joined:**Wed Feb 09, 2005 1:29 pm**Location:**North Ga Mts

### Re: Spades Humor

I totally agree there Joe there Joe and I find I look at my cards, look at the score, determine what I need to do according to the bids before me and go for it. I accept what I am dealt and I pray to the "CARDS GODS" all the time and sometimes each hand, sometimes I get the prize and other times I get *^)&. I take it for what it's worth and play my best.

JUST DUST

PS - No I was not asked to say this or do I owe Silver Creek anything or do they owe me anything for saying so, just how I feel having played with real cards and many sites and have seen NASTY cards no matter who's dealing them.

JUST DUST

PS - No I was not asked to say this or do I owe Silver Creek anything or do they owe me anything for saying so, just how I feel having played with real cards and many sites and have seen NASTY cards no matter who's dealing them.

TO BE OR NOT TO BE..... NOW WHAT KIND OF QUESTION IS THAT??? TO BE OF COURSE!!!!!

- Sailing_Away
- Guide
**Posts:**878**Joined:**Fri Feb 08, 2008 10:44 am**Location:**Perth, ON

### Re: Spades Humor

Bringing this thread out as people still question deal randomness after a string of bad deals or losses, and this goes for hearts as much as spades.

First - this is a very good mathematical explanation of how random number generators work. And in a perfectly random environment, considering how many deck combinations there are (calculate 52 factorial to 8.0658175e+67 or 80,658,175,170,943,878,571,660,636,856,403,766,975,289,505,440,883,277,824,000,000,000,000), a large number of them have to produce awful results for at least one of the players. Considering you will be in different positions to where the deal starts throughout your game or across many games, you may be unlucky enough to be the player stuck with that had often enough that you feel this can't happen randomly.

The same thought crosses the mind of the blackjack player who saw the dealer deal himself a blackjack 3 times in 10 hands where the probability of being dealt a blackjack is approx 4.83%. But as I have observed at the blackjack table, luck tends to run in streaks. A string of bad luck will eventually change to a string of good luck and the best blackjack players capitalize on them before the luck changes again.

I suspect the same happens in other games too. For that reason, I always cut the deck with card #1 when it's my turn just as I always pass on cutting at the blackjack table. Eventually the native deals will swing your way so if you feel like you're the victim of slanted deals, you just haven't waited long enough to get the good ones.

As bad as it gets, it gets that good, too.

First - this is a very good mathematical explanation of how random number generators work. And in a perfectly random environment, considering how many deck combinations there are (calculate 52 factorial to 8.0658175e+67 or 80,658,175,170,943,878,571,660,636,856,403,766,975,289,505,440,883,277,824,000,000,000,000), a large number of them have to produce awful results for at least one of the players. Considering you will be in different positions to where the deal starts throughout your game or across many games, you may be unlucky enough to be the player stuck with that had often enough that you feel this can't happen randomly.

The same thought crosses the mind of the blackjack player who saw the dealer deal himself a blackjack 3 times in 10 hands where the probability of being dealt a blackjack is approx 4.83%. But as I have observed at the blackjack table, luck tends to run in streaks. A string of bad luck will eventually change to a string of good luck and the best blackjack players capitalize on them before the luck changes again.

I suspect the same happens in other games too. For that reason, I always cut the deck with card #1 when it's my turn just as I always pass on cutting at the blackjack table. Eventually the native deals will swing your way so if you feel like you're the victim of slanted deals, you just haven't waited long enough to get the good ones.

As bad as it gets, it gets that good, too.

-Brian

"Come Sail Away with me...."

"Come Sail Away with me...."