Kamis, 30 Mei 2013

Shuffling Card also use algorithm?

Anyone know what algorithm use on it.
Nah, this is it..check it out ..it can be use for every single card also..

  1. Card games have been mankind's favorite passtimelong before the era of computers. Many, perhaps most, popular card games have been programmed into computer software.

Every card game I have ever seen starts by shuffling the cards. The purpose of the shuffling is to rearrange the cards in a more-or-less random order.
  • Surprisingly, despite the popularity of card games among computer users, just about any programming textbook teaches several algorithms on how to sort a pack of cards but most offer no clue on how to shuffle it.

In this node I will present my own card-shuffling algorithm. I also hope others will present other card-shuffling algorithms.

Preliminaries

First of all, to use my algorithm we need to represent the cards as an integer array of size n, where n is the total number of cards.
For example, a typical solitaire game uses one deck of cards consisting of four suits each containing 13 cards (from ace to king). In this case, n is equal to 4 times 13, or 52.
A different game can use two decks, plus four jokers, for an n of 108, etc.
Whatever the size of n, we will have n cards which we will refer to as card[0] ... card[n-1]. Each card has a unique value in the [0...n-1] range.
It is quite simple to convert the integer value of a card into its suit and face value. For example, with n = 52 we have four suits (0...3), so any card[i] is inside the suit card[i] / 13, while its face value iscard[i] MOD 13, where MOD designates modulo division.

The Algorithm

Step 1: Initialize the cards. For each i in the [0...n-1] range, set card[i] = i.
Step 2 (optional): Seed the random number generator.
Step 3: Let i = 0.
Step 4: Let j = random_number MOD n.
Step 5: Exchange the values of card[i] and card[j].
Step 6: Let i = i + 1. If i is less than n, go to step 4.

Sample Source Code

Here is a sample C function implementing the algorithm:
void shuffle(int *card, int n) {
 int i, j, k;

 for (i = 0; i < n; i++)
  card[i] = i;

 for (i = 0; i < n; i++) {
  j = rand() % n;
  k = card[i];
  card[i] = card[j];
  card[j] = k;
 }
}


Well, that's it..try to prove it yourself too..
:)
Enjoy ..HAND :D