math.random() follows which algorithms
Am using math.random()
method to generate random numbers. but i had a doubt about that method. math.random() is which algorithms will fallow to generate random numbers. Is there any another random number generated algorithm?
Am trying this code but i think this is not efficient to generate random code:
for (int i = 0; i < N; i++) {
int sd = i + (int) (Math.random() * (N-i));
String t = one[r];
one[r] = one[i];
one[i] = t;
}
Is there any better algorithm for random number generation?
java random
add a comment |
Am using math.random()
method to generate random numbers. but i had a doubt about that method. math.random() is which algorithms will fallow to generate random numbers. Is there any another random number generated algorithm?
Am trying this code but i think this is not efficient to generate random code:
for (int i = 0; i < N; i++) {
int sd = i + (int) (Math.random() * (N-i));
String t = one[r];
one[r] = one[i];
one[i] = t;
}
Is there any better algorithm for random number generation?
java random
Why don't you tell us what your algorithm is supposed to do?
– JB Nizet
Mar 25 '14 at 7:58
@JBNizet Collections.shuffle for a String I guess...
– Peter Lawrey
Mar 25 '14 at 8:38
What do you mean by efficient (fast, closer to real randomness, ...) ?
– Christophe Roussy
Mar 25 '14 at 9:24
add a comment |
Am using math.random()
method to generate random numbers. but i had a doubt about that method. math.random() is which algorithms will fallow to generate random numbers. Is there any another random number generated algorithm?
Am trying this code but i think this is not efficient to generate random code:
for (int i = 0; i < N; i++) {
int sd = i + (int) (Math.random() * (N-i));
String t = one[r];
one[r] = one[i];
one[i] = t;
}
Is there any better algorithm for random number generation?
java random
Am using math.random()
method to generate random numbers. but i had a doubt about that method. math.random() is which algorithms will fallow to generate random numbers. Is there any another random number generated algorithm?
Am trying this code but i think this is not efficient to generate random code:
for (int i = 0; i < N; i++) {
int sd = i + (int) (Math.random() * (N-i));
String t = one[r];
one[r] = one[i];
one[i] = t;
}
Is there any better algorithm for random number generation?
java random
java random
edited Mar 25 '14 at 8:11
Tshepang
6,0951772112
6,0951772112
asked Mar 25 '14 at 7:54
user3289828user3289828
3112
3112
Why don't you tell us what your algorithm is supposed to do?
– JB Nizet
Mar 25 '14 at 7:58
@JBNizet Collections.shuffle for a String I guess...
– Peter Lawrey
Mar 25 '14 at 8:38
What do you mean by efficient (fast, closer to real randomness, ...) ?
– Christophe Roussy
Mar 25 '14 at 9:24
add a comment |
Why don't you tell us what your algorithm is supposed to do?
– JB Nizet
Mar 25 '14 at 7:58
@JBNizet Collections.shuffle for a String I guess...
– Peter Lawrey
Mar 25 '14 at 8:38
What do you mean by efficient (fast, closer to real randomness, ...) ?
– Christophe Roussy
Mar 25 '14 at 9:24
Why don't you tell us what your algorithm is supposed to do?
– JB Nizet
Mar 25 '14 at 7:58
Why don't you tell us what your algorithm is supposed to do?
– JB Nizet
Mar 25 '14 at 7:58
@JBNizet Collections.shuffle for a String I guess...
– Peter Lawrey
Mar 25 '14 at 8:38
@JBNizet Collections.shuffle for a String I guess...
– Peter Lawrey
Mar 25 '14 at 8:38
What do you mean by efficient (fast, closer to real randomness, ...) ?
– Christophe Roussy
Mar 25 '14 at 9:24
What do you mean by efficient (fast, closer to real randomness, ...) ?
– Christophe Roussy
Mar 25 '14 at 9:24
add a comment |
5 Answers
5
active
oldest
votes
Java mainly provides four random number generator API's depending of your use case.
java.lang.Math.random()
If we check the Math class source code, we can view this:
private static Random randomNumberGenerator;
private static synchronized void initRNG() {
if (randomNumberGenerator == null)
randomNumberGenerator = new Random();
}
public static double random() {
if (randomNumberGenerator == null) initRNG();
return randomNumberGenerator.nextDouble();
}
Math.random() is simply a shortcut to call Random Class. It is more simple and less complete than java.util.Random but it's enough in some cases.
java.util.Random
The Random class implement a Linear Congruential Generator.
LCG is a pretty simple formula for Pseudorandom Number Generation. java.util.Random is not trully random, it is totally deterministric. With the same initial condition (also called the seed), you've got the same result in the same order.
Use java.util.Random
is good for the most use cases (simulation, games, ...) but is not good for cryptography because of his predictability, for this kind of use case prefer java.security.SecureRandom
.
java.util.Random
is thread safe but can have performance issues in multi-threaded context. If you work in a multi-threaded application, prefer ThreadLocalRandom
.
java.security.SecureRandom
The SecureRandom class extend java.util.Random
class to implement a cryptographically strong random number generator based on an entropy source. SecureRandom is not deterministic.
SecureRandom have multiple implementation in function of your platform (the complete implementation list).
java.security.SecureRandom
is less fast than java.util.Random
because of entropy source.
java.util.concurrent.ThreadLocalRandom
The ThreadLocalRandom class is another implementation of Linear Congruential Generator but this one isn't thread-safe but dedicated to a specific thread.
This implementation is more fast than java.util.Random
in multi-threaded context.
In your case, you could use java.util.Collections.shuffle(list)
to shuffle your array with java.util.Random
or with a specific Random Generator like java.security.SecureRandom
.
add a comment |
Use java.util.Random
API
An instance of this class is used to generate a stream of pseudorandom numbers. The class uses a 48-bit seed, which is modified using a linear congruential formula. (See Donald Knuth, The Art of Computer Programming, Volume 3, Section 3.2.1.)
Algorithm class : pseudorandom number generator known as PRNG. You can read more about it here.
Note : Math.random()
also uses java.util.Random
instance to generate the psuedo-random numbers internally
1
APRNG
is a class of algorithms; not an algorithm in it's own right.
– christopher
Mar 25 '14 at 8:25
@christopher Thanks for letting me know, I have updated the answer
– Keerthivasan
Mar 25 '14 at 9:23
add a comment |
It uses the pseudo random number generation algorithms ie the numbers which are constantly fluctuating from throughout the system.
You may also find this interseting to read:- Pseudo-Random vs. True Random
Also check the Source for java.util.Random
I don't see how this answer adds value. Thejava.util.Random
class may use system obtained values as a seed, but after that it uses a deterministic algorithm for generating further numbers.
– christopher
Mar 25 '14 at 8:26
add a comment |
The simplest way to do what you are trying to do is
String words = ...
Collections.shuffle(Arrays.asList(words));
You are right that generating a random double and then turning it into a small integer is not efficient. Fortunately Random has a method for this.
Random rand = new Random();
for (int i = words.length - 1; i > 0; i--) {
int sd = rand.nextInt(i+1); // random number between 0 and i inclusive
String t = words[r];
words[r] = words[i];
words[i] = t;
}
add a comment |
Here are 2 methods to Shuffle an Array:
Approach 1: Shuffle elements in an array
Approach 2: Java Collection.shuffle() method
And the method you use is one standard way accomplishing this.
There are 2 ways in java: java.util.Random and java.lang.Math.random.
java.lang.Math.random() uses java.util.Random.
It provides only doubles and has no seeding capability.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f22628408%2fmath-random-follows-which-algorithms%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
Java mainly provides four random number generator API's depending of your use case.
java.lang.Math.random()
If we check the Math class source code, we can view this:
private static Random randomNumberGenerator;
private static synchronized void initRNG() {
if (randomNumberGenerator == null)
randomNumberGenerator = new Random();
}
public static double random() {
if (randomNumberGenerator == null) initRNG();
return randomNumberGenerator.nextDouble();
}
Math.random() is simply a shortcut to call Random Class. It is more simple and less complete than java.util.Random but it's enough in some cases.
java.util.Random
The Random class implement a Linear Congruential Generator.
LCG is a pretty simple formula for Pseudorandom Number Generation. java.util.Random is not trully random, it is totally deterministric. With the same initial condition (also called the seed), you've got the same result in the same order.
Use java.util.Random
is good for the most use cases (simulation, games, ...) but is not good for cryptography because of his predictability, for this kind of use case prefer java.security.SecureRandom
.
java.util.Random
is thread safe but can have performance issues in multi-threaded context. If you work in a multi-threaded application, prefer ThreadLocalRandom
.
java.security.SecureRandom
The SecureRandom class extend java.util.Random
class to implement a cryptographically strong random number generator based on an entropy source. SecureRandom is not deterministic.
SecureRandom have multiple implementation in function of your platform (the complete implementation list).
java.security.SecureRandom
is less fast than java.util.Random
because of entropy source.
java.util.concurrent.ThreadLocalRandom
The ThreadLocalRandom class is another implementation of Linear Congruential Generator but this one isn't thread-safe but dedicated to a specific thread.
This implementation is more fast than java.util.Random
in multi-threaded context.
In your case, you could use java.util.Collections.shuffle(list)
to shuffle your array with java.util.Random
or with a specific Random Generator like java.security.SecureRandom
.
add a comment |
Java mainly provides four random number generator API's depending of your use case.
java.lang.Math.random()
If we check the Math class source code, we can view this:
private static Random randomNumberGenerator;
private static synchronized void initRNG() {
if (randomNumberGenerator == null)
randomNumberGenerator = new Random();
}
public static double random() {
if (randomNumberGenerator == null) initRNG();
return randomNumberGenerator.nextDouble();
}
Math.random() is simply a shortcut to call Random Class. It is more simple and less complete than java.util.Random but it's enough in some cases.
java.util.Random
The Random class implement a Linear Congruential Generator.
LCG is a pretty simple formula for Pseudorandom Number Generation. java.util.Random is not trully random, it is totally deterministric. With the same initial condition (also called the seed), you've got the same result in the same order.
Use java.util.Random
is good for the most use cases (simulation, games, ...) but is not good for cryptography because of his predictability, for this kind of use case prefer java.security.SecureRandom
.
java.util.Random
is thread safe but can have performance issues in multi-threaded context. If you work in a multi-threaded application, prefer ThreadLocalRandom
.
java.security.SecureRandom
The SecureRandom class extend java.util.Random
class to implement a cryptographically strong random number generator based on an entropy source. SecureRandom is not deterministic.
SecureRandom have multiple implementation in function of your platform (the complete implementation list).
java.security.SecureRandom
is less fast than java.util.Random
because of entropy source.
java.util.concurrent.ThreadLocalRandom
The ThreadLocalRandom class is another implementation of Linear Congruential Generator but this one isn't thread-safe but dedicated to a specific thread.
This implementation is more fast than java.util.Random
in multi-threaded context.
In your case, you could use java.util.Collections.shuffle(list)
to shuffle your array with java.util.Random
or with a specific Random Generator like java.security.SecureRandom
.
add a comment |
Java mainly provides four random number generator API's depending of your use case.
java.lang.Math.random()
If we check the Math class source code, we can view this:
private static Random randomNumberGenerator;
private static synchronized void initRNG() {
if (randomNumberGenerator == null)
randomNumberGenerator = new Random();
}
public static double random() {
if (randomNumberGenerator == null) initRNG();
return randomNumberGenerator.nextDouble();
}
Math.random() is simply a shortcut to call Random Class. It is more simple and less complete than java.util.Random but it's enough in some cases.
java.util.Random
The Random class implement a Linear Congruential Generator.
LCG is a pretty simple formula for Pseudorandom Number Generation. java.util.Random is not trully random, it is totally deterministric. With the same initial condition (also called the seed), you've got the same result in the same order.
Use java.util.Random
is good for the most use cases (simulation, games, ...) but is not good for cryptography because of his predictability, for this kind of use case prefer java.security.SecureRandom
.
java.util.Random
is thread safe but can have performance issues in multi-threaded context. If you work in a multi-threaded application, prefer ThreadLocalRandom
.
java.security.SecureRandom
The SecureRandom class extend java.util.Random
class to implement a cryptographically strong random number generator based on an entropy source. SecureRandom is not deterministic.
SecureRandom have multiple implementation in function of your platform (the complete implementation list).
java.security.SecureRandom
is less fast than java.util.Random
because of entropy source.
java.util.concurrent.ThreadLocalRandom
The ThreadLocalRandom class is another implementation of Linear Congruential Generator but this one isn't thread-safe but dedicated to a specific thread.
This implementation is more fast than java.util.Random
in multi-threaded context.
In your case, you could use java.util.Collections.shuffle(list)
to shuffle your array with java.util.Random
or with a specific Random Generator like java.security.SecureRandom
.
Java mainly provides four random number generator API's depending of your use case.
java.lang.Math.random()
If we check the Math class source code, we can view this:
private static Random randomNumberGenerator;
private static synchronized void initRNG() {
if (randomNumberGenerator == null)
randomNumberGenerator = new Random();
}
public static double random() {
if (randomNumberGenerator == null) initRNG();
return randomNumberGenerator.nextDouble();
}
Math.random() is simply a shortcut to call Random Class. It is more simple and less complete than java.util.Random but it's enough in some cases.
java.util.Random
The Random class implement a Linear Congruential Generator.
LCG is a pretty simple formula for Pseudorandom Number Generation. java.util.Random is not trully random, it is totally deterministric. With the same initial condition (also called the seed), you've got the same result in the same order.
Use java.util.Random
is good for the most use cases (simulation, games, ...) but is not good for cryptography because of his predictability, for this kind of use case prefer java.security.SecureRandom
.
java.util.Random
is thread safe but can have performance issues in multi-threaded context. If you work in a multi-threaded application, prefer ThreadLocalRandom
.
java.security.SecureRandom
The SecureRandom class extend java.util.Random
class to implement a cryptographically strong random number generator based on an entropy source. SecureRandom is not deterministic.
SecureRandom have multiple implementation in function of your platform (the complete implementation list).
java.security.SecureRandom
is less fast than java.util.Random
because of entropy source.
java.util.concurrent.ThreadLocalRandom
The ThreadLocalRandom class is another implementation of Linear Congruential Generator but this one isn't thread-safe but dedicated to a specific thread.
This implementation is more fast than java.util.Random
in multi-threaded context.
In your case, you could use java.util.Collections.shuffle(list)
to shuffle your array with java.util.Random
or with a specific Random Generator like java.security.SecureRandom
.
edited Jan 9 '18 at 12:40
answered Jan 9 '18 at 10:28
Valentin MichalakValentin Michalak
1,206523
1,206523
add a comment |
add a comment |
Use java.util.Random
API
An instance of this class is used to generate a stream of pseudorandom numbers. The class uses a 48-bit seed, which is modified using a linear congruential formula. (See Donald Knuth, The Art of Computer Programming, Volume 3, Section 3.2.1.)
Algorithm class : pseudorandom number generator known as PRNG. You can read more about it here.
Note : Math.random()
also uses java.util.Random
instance to generate the psuedo-random numbers internally
1
APRNG
is a class of algorithms; not an algorithm in it's own right.
– christopher
Mar 25 '14 at 8:25
@christopher Thanks for letting me know, I have updated the answer
– Keerthivasan
Mar 25 '14 at 9:23
add a comment |
Use java.util.Random
API
An instance of this class is used to generate a stream of pseudorandom numbers. The class uses a 48-bit seed, which is modified using a linear congruential formula. (See Donald Knuth, The Art of Computer Programming, Volume 3, Section 3.2.1.)
Algorithm class : pseudorandom number generator known as PRNG. You can read more about it here.
Note : Math.random()
also uses java.util.Random
instance to generate the psuedo-random numbers internally
1
APRNG
is a class of algorithms; not an algorithm in it's own right.
– christopher
Mar 25 '14 at 8:25
@christopher Thanks for letting me know, I have updated the answer
– Keerthivasan
Mar 25 '14 at 9:23
add a comment |
Use java.util.Random
API
An instance of this class is used to generate a stream of pseudorandom numbers. The class uses a 48-bit seed, which is modified using a linear congruential formula. (See Donald Knuth, The Art of Computer Programming, Volume 3, Section 3.2.1.)
Algorithm class : pseudorandom number generator known as PRNG. You can read more about it here.
Note : Math.random()
also uses java.util.Random
instance to generate the psuedo-random numbers internally
Use java.util.Random
API
An instance of this class is used to generate a stream of pseudorandom numbers. The class uses a 48-bit seed, which is modified using a linear congruential formula. (See Donald Knuth, The Art of Computer Programming, Volume 3, Section 3.2.1.)
Algorithm class : pseudorandom number generator known as PRNG. You can read more about it here.
Note : Math.random()
also uses java.util.Random
instance to generate the psuedo-random numbers internally
edited Mar 25 '14 at 9:22
answered Mar 25 '14 at 7:58
KeerthivasanKeerthivasan
10.7k21939
10.7k21939
1
APRNG
is a class of algorithms; not an algorithm in it's own right.
– christopher
Mar 25 '14 at 8:25
@christopher Thanks for letting me know, I have updated the answer
– Keerthivasan
Mar 25 '14 at 9:23
add a comment |
1
APRNG
is a class of algorithms; not an algorithm in it's own right.
– christopher
Mar 25 '14 at 8:25
@christopher Thanks for letting me know, I have updated the answer
– Keerthivasan
Mar 25 '14 at 9:23
1
1
A
PRNG
is a class of algorithms; not an algorithm in it's own right.– christopher
Mar 25 '14 at 8:25
A
PRNG
is a class of algorithms; not an algorithm in it's own right.– christopher
Mar 25 '14 at 8:25
@christopher Thanks for letting me know, I have updated the answer
– Keerthivasan
Mar 25 '14 at 9:23
@christopher Thanks for letting me know, I have updated the answer
– Keerthivasan
Mar 25 '14 at 9:23
add a comment |
It uses the pseudo random number generation algorithms ie the numbers which are constantly fluctuating from throughout the system.
You may also find this interseting to read:- Pseudo-Random vs. True Random
Also check the Source for java.util.Random
I don't see how this answer adds value. Thejava.util.Random
class may use system obtained values as a seed, but after that it uses a deterministic algorithm for generating further numbers.
– christopher
Mar 25 '14 at 8:26
add a comment |
It uses the pseudo random number generation algorithms ie the numbers which are constantly fluctuating from throughout the system.
You may also find this interseting to read:- Pseudo-Random vs. True Random
Also check the Source for java.util.Random
I don't see how this answer adds value. Thejava.util.Random
class may use system obtained values as a seed, but after that it uses a deterministic algorithm for generating further numbers.
– christopher
Mar 25 '14 at 8:26
add a comment |
It uses the pseudo random number generation algorithms ie the numbers which are constantly fluctuating from throughout the system.
You may also find this interseting to read:- Pseudo-Random vs. True Random
Also check the Source for java.util.Random
It uses the pseudo random number generation algorithms ie the numbers which are constantly fluctuating from throughout the system.
You may also find this interseting to read:- Pseudo-Random vs. True Random
Also check the Source for java.util.Random
answered Mar 25 '14 at 7:59
Rahul TripathiRahul Tripathi
126k21163235
126k21163235
I don't see how this answer adds value. Thejava.util.Random
class may use system obtained values as a seed, but after that it uses a deterministic algorithm for generating further numbers.
– christopher
Mar 25 '14 at 8:26
add a comment |
I don't see how this answer adds value. Thejava.util.Random
class may use system obtained values as a seed, but after that it uses a deterministic algorithm for generating further numbers.
– christopher
Mar 25 '14 at 8:26
I don't see how this answer adds value. The
java.util.Random
class may use system obtained values as a seed, but after that it uses a deterministic algorithm for generating further numbers.– christopher
Mar 25 '14 at 8:26
I don't see how this answer adds value. The
java.util.Random
class may use system obtained values as a seed, but after that it uses a deterministic algorithm for generating further numbers.– christopher
Mar 25 '14 at 8:26
add a comment |
The simplest way to do what you are trying to do is
String words = ...
Collections.shuffle(Arrays.asList(words));
You are right that generating a random double and then turning it into a small integer is not efficient. Fortunately Random has a method for this.
Random rand = new Random();
for (int i = words.length - 1; i > 0; i--) {
int sd = rand.nextInt(i+1); // random number between 0 and i inclusive
String t = words[r];
words[r] = words[i];
words[i] = t;
}
add a comment |
The simplest way to do what you are trying to do is
String words = ...
Collections.shuffle(Arrays.asList(words));
You are right that generating a random double and then turning it into a small integer is not efficient. Fortunately Random has a method for this.
Random rand = new Random();
for (int i = words.length - 1; i > 0; i--) {
int sd = rand.nextInt(i+1); // random number between 0 and i inclusive
String t = words[r];
words[r] = words[i];
words[i] = t;
}
add a comment |
The simplest way to do what you are trying to do is
String words = ...
Collections.shuffle(Arrays.asList(words));
You are right that generating a random double and then turning it into a small integer is not efficient. Fortunately Random has a method for this.
Random rand = new Random();
for (int i = words.length - 1; i > 0; i--) {
int sd = rand.nextInt(i+1); // random number between 0 and i inclusive
String t = words[r];
words[r] = words[i];
words[i] = t;
}
The simplest way to do what you are trying to do is
String words = ...
Collections.shuffle(Arrays.asList(words));
You are right that generating a random double and then turning it into a small integer is not efficient. Fortunately Random has a method for this.
Random rand = new Random();
for (int i = words.length - 1; i > 0; i--) {
int sd = rand.nextInt(i+1); // random number between 0 and i inclusive
String t = words[r];
words[r] = words[i];
words[i] = t;
}
answered Mar 25 '14 at 8:37
Peter LawreyPeter Lawrey
442k56559965
442k56559965
add a comment |
add a comment |
Here are 2 methods to Shuffle an Array:
Approach 1: Shuffle elements in an array
Approach 2: Java Collection.shuffle() method
And the method you use is one standard way accomplishing this.
There are 2 ways in java: java.util.Random and java.lang.Math.random.
java.lang.Math.random() uses java.util.Random.
It provides only doubles and has no seeding capability.
add a comment |
Here are 2 methods to Shuffle an Array:
Approach 1: Shuffle elements in an array
Approach 2: Java Collection.shuffle() method
And the method you use is one standard way accomplishing this.
There are 2 ways in java: java.util.Random and java.lang.Math.random.
java.lang.Math.random() uses java.util.Random.
It provides only doubles and has no seeding capability.
add a comment |
Here are 2 methods to Shuffle an Array:
Approach 1: Shuffle elements in an array
Approach 2: Java Collection.shuffle() method
And the method you use is one standard way accomplishing this.
There are 2 ways in java: java.util.Random and java.lang.Math.random.
java.lang.Math.random() uses java.util.Random.
It provides only doubles and has no seeding capability.
Here are 2 methods to Shuffle an Array:
Approach 1: Shuffle elements in an array
Approach 2: Java Collection.shuffle() method
And the method you use is one standard way accomplishing this.
There are 2 ways in java: java.util.Random and java.lang.Math.random.
java.lang.Math.random() uses java.util.Random.
It provides only doubles and has no seeding capability.
edited Mar 25 '14 at 9:32
answered Mar 25 '14 at 9:08
Owen CaoOwen Cao
5,90811931
5,90811931
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f22628408%2fmath-random-follows-which-algorithms%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Why don't you tell us what your algorithm is supposed to do?
– JB Nizet
Mar 25 '14 at 7:58
@JBNizet Collections.shuffle for a String I guess...
– Peter Lawrey
Mar 25 '14 at 8:38
What do you mean by efficient (fast, closer to real randomness, ...) ?
– Christophe Roussy
Mar 25 '14 at 9:24