| Author |
How would you shuffle and array in J2ME ?
|
Iliyan Ivanov
Greenhorn
Joined: Jun 30, 2011
Posts: 8
|
|
Hi guys,
I want to create a method for shuffling array in J2ME. Can you suggest some ways?
Thank you
|
 |
Walter Gabrielsen Iii
Ranch Hand
Joined: Apr 09, 2011
Posts: 158
|
|
Sure. You mean like randomize the order of the array?
To make random numbers you need:
java.util.Random
java.lang.Math
% (Modulo operator)
Create a Random object, which is your random number generator, and call its nextInt() method.
The Math.abs() method keeps your random numbers in the positive range.
The '%' (Modulo) will help you constrain the range of random numbers, such as to the length of an array.
Example:
You need the array length for random number generation. You need a way to copy values to a new temporary array so you don't mess with the original.
Also, Somehow keep track of which ones you've already moved so your application doesn't copy two or more values from the array or you loose some.
If you have an object array you can skip all the double checking. Just copy your array into the method argument, then into the Vector using its copyInto(Object[] anArray) method, then keep calling, size() (for the Modulo), and elementAt(int index) (to move this object into the temp. array), and removeElementAt(int index) to lower the size of the Vector.
Keep doing randoms to the Vector until its empty, then you know your Temp array is ready to replace the original.
|
 |
Darryl Burke
Bartender
Joined: May 03, 2008
Posts: 3214
|
|
|
Random#nextInt(int n) will return a number in the range 0..n (inclusive, exclusive) obviating the need for Math.abs and modulo.
|
luck, db
There are no new questions, but there may be new answers.
|
 |
Matthew Brown
Bartender
Joined: Apr 06, 2010
Posts: 2686
|
|
You can avoid the need for a temporary array. If you look at the documentation for Collections.shuffle(), it describes a simple algorithm for randomly shuffling in situ.
(Of course, if java.util.Collections is available in J2ME, and if you use a List instead of an array, you can just call the method direct and let it do the work for you).
|
 |
Darryl Burke
Bartender
Joined: May 03, 2008
Posts: 3214
|
|
|
No, the Collections API isn't part of Java ME.
|
 |
Matthew Brown
Bartender
Joined: Apr 06, 2010
Posts: 2686
|
|
|
Thanks - I guessed it probably wasn't. But the approach that method describes is a good one.
|
 |
 |
|
|
subject: How would you shuffle and array in J2ME ?
|
|
|