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 64-bit multiply 
with carry generator, while what I posted was a 32-bit multiply with carry 
generator.

Don

On Saturday, February 8, 2014 2:26:34 AM UTC-5, atul007 wrote:
>
> @don : awesome .... +1 . I was not aware of George Marsaglia's Multiply 
> With Carry generator. But it is soo coooolll . 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 :)
>
>
>
> On Sat, Feb 8, 2014 at 1:28 AM, Don <[email protected] <javascript:>>wrote:
>
>> 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 sample.
>> Your question was to randomly generate values in the range 1-10, not to 
>> generate permutations.
>>
>> Here is a way to generate a permutation without swapping:
>>
>> unsigned int X = time(0);
>> int n[10];
>> n[0] = 10;
>> for(i = 1; i < 10; ++i)
>> {
>>    X = 63663 * (X&65535) + (X>>16);
>>    int j = (X & 65535) % (i+1);
>>    n[i] = n[j];
>>    n[j] = i;  
>> }
>>
>> // n now contains a permutation of the values 1-10.
>>
>>
>> On Thursday, February 6, 2014 11:33:53 PM UTC-5, atul007 wrote:
>>
>>> @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 .
>>> then interviewer said that u are not allowed to swap elements which is 
>>> requied in fishr yates.
>>> his hint was: how will you generate randomly number from 1-10 without 
>>> use of rand() function.
>>> expected time complexity : O(n)
>>> On 7 Feb 2014 03:17, "Don" <[email protected]> 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 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 = 63663 * (x&65535) + (x>>16);
>>>>>    return (x & 65535) % 10;
>>>>> }
>>>>>
>>>>> On Sunday, February 2, 2014 2:51:47 AM UTC-5, atul007 wrote:
>>>>>>
>>>>>> Generate random number form 1 - 10 with probability of 1/10.You are 
>>>>>> not allowed to used rand() function.
>>>>>>
>>>>>> any simple way of achieving above with using any complex 
>>>>>> implementation of random number generators algorithm . 
>>>>>>  
>>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Algorithm Geeks" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>>
>>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Algorithm Geeks" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].

Reply via email to