Thanks for the explanation Don! It looks like I need better math-foo to
completely understand your explanation...
On Tuesday, February 11, 2014 10:07:05 AM UTC-8, Don wrote:
It can be shown mathematically that if you use a multiplier A such that
A*2^15-1 and A*2^16-1 are both prime, you get
It can be shown mathematically that if you use a multiplier A such that
A*2^15-1 and A*2^16-1 are both prime, you get a sequence with period
A*2^15. With A=63663 you get a sequence of nearly two billion. If A was
larger than 2^16, the multiplication would result in overflow in some
cases, so
https://groups.google.com/forum/#!original/comp.lang.java.programmer/Z8lfFIDhS7k/wbPLDldPSSgJ
The Multiply With Carry generator is ok for some purposes. There are
generators with longer periods and better statistical properties, but they
are more complicated. The link I provided has code for a
:) true... that was silly of me.. I was too quick to post... anyway, the
point I was trying to understand was why this specific combination of
operations would produce good randomness... Running the original solution
you posted a million times (with the max limit set to 1000), below is the
Because if you put that in a loop you will get a series like:
3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5...
On Thursday, February 6, 2014 8:27:27 PM UTC-5, SVIX wrote:
Just curious... Why is this more random than
(getSystemTimeInMilliseconds() % 10)
On Thursday, February
A random generator will not always (or even usually) produce a permutation
of the possible values before repeating.
If you call my function 10 million times and tally up the results, you will
get a distribution with about a million of each value, as close as you
would expect for a random
@don : awesome +1 . I was not aware of George Marsaglia's Multiply
With Carry generator. But it is soo clll . If you have any good link
for its proof or explanation of the idea behind it then please mention it.
I never knew generating random number can be few lines of code :)
Thanks :)
Just noticed that you asked for 1-10, and my code will clearly generate
0-9. Add one for the desired range.
Don
On Wednesday, February 5, 2014 4:29:26 PM UTC-5, Don wrote:
// Using George Marsaglia's Multiply With Carry generator
int rnd10()
{
static unsigned int x = time(0);
x =
Just curious... Why is this more random than (getSystemTimeInMilliseconds()
% 10)
On Thursday, February 6, 2014 1:47:15 PM UTC-8, Don wrote:
Just noticed that you asked for 1-10, and my code will clearly generate
0-9. Add one for the desired range.
Don
On Wednesday, February 5, 2014
@don: algo look fine..i tested it ,but it did not generate 1-10 with
probabilty of 1/10 everytime.
actually question was asked in an intrview.
question started with displaying all elements in an array randomly without
repetition i.e only once( probabilty 1/10)...which can be done with fisher
yates
10 matches
Mail list logo