Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Random Numbers - shuffling

JavaFAQ Home » Java Notes by Fred Swartz Go to all tips in Java Notes by Fred Swartz


Bookmark and Share

A standard approach to shuffling the elements of an array is to write some code as described below. As of Java 2 the java.util.Collections class contains a static shuffle(list) method, which is described at the bottom.

Shuffling: Random numbers without replacement

The random number methods generate numbers with replacement. This means that a particular random number may be generated repeatedly. If you don't want the same numbers to be repeated, put the values (numbers, strings, objects, ...) in an array, then shuffle the array by randomly exchanging the array elements. The example below shows how to produce the values from 0 to 51 in a random order with no repetition.

Example: Shuffling

A common problem is to shuffle (to randomly rearrange) the elements of an array. Here is how to do that.

Random rgen = new Random();  // Random number generator
int[] cards = new int[52];  

//--- Initialize the array to the ints 0-51
for (int i=0; i<52; i++) {
    cards[i] = i;
}

//--- Shuffle by exchanging each element randomly
for (int i=0; i<52; i++) {
    int randomPosition = rgen.nextInt(52);
    int temp = cards[i];
    cards[i] = card[randomPosition];
    cards[randomPosition] = temp;
}

java.util.Collections.shuffle(...)

Java has extensive classes for handling data structures, the so-called "Collections" classes. Most of these do not work on simple arrays of primitive values. If your data is already in one of the collections classes, eg, ArrayList, then you can use the java.util.Collections.shuffle() method easily. Arrays of objects can easily be converted to ArrayLists by using the java.util.Arrays.asList(. . .) method. For example, the above randomization could be accomplished with the following.

import java.util.*;
. . .
Collections.shuffle(Arrays.asList(cards));

 Printer Friendly Page  Printer Friendly Page
 Send to a Friend  Send to a Friend

.. Bookmark and Share

Search here again if you need more info!
Custom Search



Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy