Code:
#include <iostream>
#include <ctime>

#define LOW 2
#define HIGH 52

void Swap(unsigned int &A, unsigned int &B)
{
	int C = A;
	A = B;
	B = C;
}

class Deck {
	private:
		unsigned int Cards[52][2];
		time_t Seconds;
		unsigned int DeckSize;
	public:
		Deck();
		void Shuffle();
};

Deck::Deck()
{
	DeckSize = 52;
	
	time(&Seconds);
	srand((unsigned int) Seconds);
	
	unsigned int Values[13] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
	int i = 0, j = 0 , k = 1;
	
	for(i; i < 52; i++)
	{
		Cards[i][0] = Values[j];
		
		(j == 12) ? j = 0 : j++;
	}
	
	for(i = 0; i < 52; i++)
	{
		Cards[i][1] = k;
		
		(j == 12) ? (k++, j=0) : j++;
	}
}

void Deck::Shuffle()
{
	DeckSize = 52;
	int i = 52, RandomIndex = 0;
	
	for(i; i >= 2; i--)
	{
		RandomIndex = (rand() % (HIGH - LOW + 1) + LOW) % i;
		Swap(Cards[i][0], Cards[RandomIndex][0]);
		Swap(Cards[i][1], Cards[RandomIndex][1]);
	}
	
	for(i = 0; i < 52; i++)
	{
		std::cout << Cards[i][0] << " " << Cards[i][1] << std::endl;
	}
}

int main()
{
	Deck Foo;
	Foo.Shuffle();
	std::cin.get();
}
This is my code so far. The shuffle() function is not really supposed to print the deck but i did that for debugging purposes, so i could check how the deck got shuffled.

My deck is as you can see a 2 dimensional array of 52x2 unsigned integers. The first row is the Face Value of the card (Jack, Ace, 5 etc.), the second row is the suit of the card (Diamonds, Clubs and so on).

The algorithm i used loops through the deck from 52 to 2. It gets a random number (mod the loop index), and swaps the corresponding element in the array with the element of the index loop.

The output i get is almost what i wanted, the deck is shuffled, quite randomly. But one of the elements contains a huge number, instead of 2-14, and the suit element of that card contains 52 (or MAX). The number i get looks like an overflow error, but i've gone over the loops a million times, with no results.

1. Is my shuffling algorithm valid, or is there a better one i can use?

2. Where is the overflow error, i for sure as hell can't find it, and i'ts been bugging me for hours!