Random Numbers on button

• 10-07-2005, 07:09 AM
daina
Random Numbers on button
Hi,

I was wondering how do i go about generating unique random numbers?
ie
i want to generate numbers between 0-9 randomly. I dont want to repeat the numbers.Then that no: should display on the buttons.ie there are 9 buttons. first randomly generated number should display on the first button & 2nd no: should display on 2nd button. & so on for example I have the numbers 9371482065 then 9 should display on the first button ,3 should display on 2nd button ....
But the following code i'm having is repeating some numbers...can any one help me in solving...please.....

code::::

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

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

// --- Shuffle by exchanging each element randomly
for (int i=0; i<10; i++) {
int randomPosition = rgen.nextInt(10);
System.out.println(" randomPosition " + randomPosition);
int temp = cards[i];
System.out.println(" temp" + temp);
cards[i] = cards[randomPosition];
cards[randomPosition] = temp;

System.out.println(" Random Number" + cards[randomPosition]);

}
• 10-07-2005, 08:15 AM
Wizard1988
Computers can't generate real random numbers :) but you can get some real random numbers here http://www.fourmilab.ch/hotbits/
• 10-07-2005, 09:44 AM
sjalle
I think this is random enough for your purpose
The idea is to stuff the random numbers into a HashSet as you go along.
When the size of the hashset is 10 you know that it contains 10
unique integers.

Code:

```import java.util.*; public class Ramdomizer {   public static Random rand=new Random(System.currentTimeMillis());   static HashSet hs=new HashSet();   public Ramdomizer() {}   public int [] getRandoms(int maxNo) {     hs.clear();     while (true) {       int n = rand.nextInt(maxNo);       hs.add(new Integer(n));       if (hs.size() == maxNo) {         break;       }     }     int [] ret=new int[maxNo];     Iterator it=hs.iterator();     int cnt=0;     while (it.hasNext()) {       ret[cnt++]=((Integer)it.next()).intValue();     }     return shuffle(ret);   }   private int [] shuffle(int [] arr) {     for (int i=0; i<arr.length; i++) {       int rp = rand.nextInt(10);       int tmp=arr[rp];       arr[rp]=arr[i];       arr[i]=tmp;     }     return arr;   }   /**   * *********** MAIN ***********   */   public static void main(String[] args) {     Ramdomizer rd = new Ramdomizer();     int [] rn=rd.getRandoms(10);     showResult(rn);     rn=rd.getRandoms(10);     showResult(rn);   }   private static void showResult(int[] rn) {     for (int i=0; i<rn.length; i++) {       System.out.println(i+": "+rn[i]);     }   } }```
• 10-12-2005, 01:35 AM
mohit
Quote:

Originally Posted by daina
Hi,

I was wondering how do i go about generating unique random numbers?
ie
i want to generate numbers between 0-9 randomly. I dont want to repeat the numbers.Then that no: should display on the buttons.ie there are 9 buttons. first randomly generated number should display on the first button & 2nd no: should display on 2nd button. & so on for example I have the numbers 9371482065 then 9 should display on the first button ,3 should display on 2nd button ....
But the following code i'm having is repeating some numbers...can any one help me in solving...please.....

code::::

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

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

// --- Shuffle by exchanging each element randomly
for (int i=0; i<10; i++) {
int randomPosition = rgen.nextInt(10);
System.out.println(" randomPosition " + randomPosition);
int temp = cards[i];
System.out.println(" temp" + temp);
cards[i] = cards[randomPosition];
cards[randomPosition] = temp;

System.out.println(" Random Number" + cards[randomPosition]);

}

Read your code again. Its perfect! You just need to print the cards array in another loop after the first for loop and you will get desired result.

Regards,
Mohit