I do not find myself needing random numbers very often in my projects, so I thought it would be good to talk about a few useful applications of Random Integers.

The easily to implement without any additional programming would be a dice roller. You need only call Math.RandomInteger(n)

, where n is the number of sides of the die you wish to roll. So a six-sided Function might look like:

### Example 1: Six-Sided Die

var d6 = function(mod) { if (! mod) {mod = 0;} return Math.RandomInteger(6) + mod; }

I made a slight modification to the Function, so that you can modify the result if you desire. Another example are casino games. Most likely they will use a stronger Random Function than the one I have provided, but the concept is the same. Here is a simple shuffle Function for a deck of cards:

### Example 2: Card Shuffle

var deck = [H1,H2,H3,H4,H5,H6,H7,H8,H9,H10,H11,H12,H13,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13]; var shuffle = function(n) { for (var i = n - 1; 0 <= i; i -= 1) { var r1 = Math.RandomInteger(deck.length) - 1; var r2 = Math.RandomInteger(deck.length) - 1; var temp = deck[r1]; deck[r1] = deck[r2]; deck[r2] = temp; } }

First we create a deck of cards, where each card is represented by a string containing the first letter of the suit and the face-value of the cards, so: H = hearts, D = diamonds, S = spades, C = clubs, 1 = ace, 11 = jack, 12 = queen, and 13 = king. To randomize the order of these cards, the shuffle Function will randomly swap the position of two cards n

number of times. The higher n

is the more random the cards in the deck will be organized.

The last example for today is a hexadecimal number generator, which will be used to generate random colors. I used this on the Graph Beta Test Page to change the colors of the lines and legends when adding additional lines to the graph.

### Example 3: Random Hexadecimal

Number.prototype.toHexadecimal = function() { return this.toString(16); } String.prototype.todecimal = function() { return parseInt(this.replace(/[^0-9A-Fa-f]/g, ), 16); } var getRandomHex = function(n) { if (! n) {n = 16;} var m = Math.RandomInteger(n) - 1; return m.toHexadecimal(); };

The first method appends to the Number prototype a method that converts a Number into a hexadecimal String, using native JavaScript method toString

. Unfortunately, native toString

method does not preserve significant figures and a call like "(256).toHexadecimal()" can return A

or 1

, instead of 0A

or 01

. The second method does the reverse, converting a hexadecimal String into a Number, using the native parseInt

method with a base 16. We also strip out any characters that arent valid hexadecimal characters before we attempt to parse the integer. Lastly, we can leverage the

toHexadecimal method to convert a random integer (0, 15) into a hexadecimal in the

getRandomHex method. That method also accepts a Number

n in case you want to generate a random hexadecimal that is larger than 16.

Using getRandomHex we can now generate random colors:

### Example 4: Random Colors

var getRandomColor = function() { return #+ getRandomHex() + getRandomHex() + getRandomHex() + getRandomHex() + getRandomHex() + getRandomHex(); };

To give these examples a try, I have created a simple Random Applications Test Page.