I rhink to avoid collisions altogether we should generate an ordered
sequence , in a dec. or inc. order and
display them randomly, i mean:

Let say a[10] contains all the random no.s , map all the 10 indexes to
a hash table and then display the arrays with the hashed index...

I think it may work...

what say..?


On 8/5/11, Gaurav Menghani <gaurav.mengh...@gmail.com> wrote:
> 1. Get a good seed.
> 2. Increase the degree of the polynomial.
>
> This is no fixed algorithm, if you find that more than T steps have
> passed and a new number has not been generated, you can always change
> the polynomial. And, please remember it is a 'pseudo-random number
> generator'. You can read the theory about PRNGs and LFSRs, all of them
> repeat.
>
> On Fri, Aug 5, 2011 at 7:14 PM, payel roy <smithpa...@gmail.com> wrote:
>> How do you guarantee termination of your algorithm if duplication occurs
>> ??
>>
>> On 5 August 2011 18:25, Gaurav Menghani <gaurav.mengh...@gmail.com> wrote:
>>>
>>> You might want to read the theory on Pseudo-Random Number Generators
>>> [0] and Linear Feedback Shift Register [1]
>>>
>>> The basic way of generating a random number is taking up a polynomial,
>>> f(x) = ax^n + bx^(n-1) + .. + yx + z, and finding f(i + seed) % N,
>>> where i is the ith random number you want, and seed can be anything
>>> random available, for example, you can find the current millisecond
>>> using time.h functions.
>>>
>>> A simple implementation, without the time thing is below:
>>>
>>> #include<iostream>
>>> using namespace std;
>>>
>>> int poly[10],pn,N,M;
>>> int get(int seed)
>>> {
>>>        int t=0;
>>>        for(int i=0;i<pn;i++)
>>>        {
>>>                int res=poly[i];
>>>                for(int j=1;j<=(i+1);j++) { res = (res*seed); if(res>=N)
>>> res%=N; }
>>>                t+=res;
>>>                if(t>=N) t%=N;
>>>        }
>>>        t=(t+seed);
>>>        t%=N;
>>>        return t;
>>> }
>>>
>>> void setup_prng()
>>> {
>>>        pn=5;
>>>        poly[0]=2; poly[1]=3; poly[2]=5; poly[3]=7; poly[4]=11;
>>>        N=200; M=100;
>>> }
>>>
>>> int main()
>>> {
>>>        setup_prng();
>>>        for(int i=1;i<=M;i++)
>>>                cout<<get(i)<<endl;
>>>        return 0;
>>> }
>>>
>>> Whenever there is a collision, you can increment the value passed to
>>> the random number generator and continue. However, I am not sure how
>>> to check for collisions in O(1) space.
>>>
>>> [0] http://en.wikipedia.org/wiki/Pseudorandom_number_generator
>>> [1] http://en.wikipedia.org/wiki/Linear_feedback_shift_register
>>>
>>> On Fri, Aug 5, 2011 at 5:19 PM, payel roy <smithpa...@gmail.com> wrote:
>>> > Given a range 0-N, generate 'M' random numbers from the range without
>>> > any
>>> > duplication. The space complexity is O(1).
>>> >
>>> > --
>>> > You received this message because you are subscribed to the Google
>>> > Groups
>>> > "Algorithm Geeks" group.
>>> > To post to this group, send email to algogeeks@googlegroups.com.
>>> > To unsubscribe from this group, send email to
>>> > algogeeks+unsubscr...@googlegroups.com.
>>> > For more options, visit this group at
>>> > http://groups.google.com/group/algogeeks?hl=en.
>>> >
>>>
>>>
>>>
>>> --
>>> Gaurav Menghani
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Algorithm Geeks" group.
>>> To post to this group, send email to algogeeks@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> algogeeks+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>
>
> --
> Gaurav Menghani
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to