@Sanjeev: Set a pointer p to the first node. Traverse the list. When at the 
kth node, set p to the kth node with probability 1/k. When you reach the 
end of the list, return p, which will point to a random node with uniform 
probability.
 
Dave

On Thursday, December 27, 2012 11:18:20 PM UTC-6, Sanjeev wrote:

> i mean the length of the linked list is not known to us.
> @udit how can we do this in single traversal ? i think we need to traverse 
> the linked list twice in your case.
> Please reply if i am wrong ?
>
> On Thu, Dec 27, 2012 at 10:48 PM, Udit Agarwal <udit...@gmail.com<javascript:>
> > wrote:
>
>> If the length of the linked is infinite then the above algo would do
>> the needful.
>> In case you have a finite length linked list, then you can normalize
>> the random value using following:
>> Suppose length of linked list is: l
>> random number is: r; and r > l
>> then new random number would be: r1 = r%l;
>> now again use the above algo using new random number r1;
>>
>> On Thu, Dec 27, 2012 at 4:12 PM, Vineeth <vineet...@gmail.com<javascript:>> 
>> wrote:
>> > You said : "Given a linked list of infinite length"
>> >
>> > On Thu, Dec 27, 2012 at 4:06 PM, naveen shukla
>> > <naveenshukla...@gmail.com <javascript:>> wrote:
>> >> But suppose a random number generate a value 5 and your linked list 
>> has only
>> >> four elements. In that case what would be the answer ???
>> >>
>> >>
>> >> On Thu, Dec 27, 2012 at 4:03 PM, Prem Krishna Chettri <
>> hpre...@gmail.com <javascript:>>
>> >> wrote:
>> >>>
>> >>> Well my algo will be Something like this
>> >>>
>> >>> 1> Get a Random number. Perhaps You can have the function like 
>> Randon(List
>> >>> *head, int Randomnumber)
>> >>>
>> >>> 2> Use the function argument Randomnumber to loop the list.
>> >>>             i.e. for(int count=0;count<=Randomnumber;count++ ){
>> >>>                            head = head -> next;
>> >>> }
>> >>>
>> >>> 3> print (head->value);
>> >>>
>> >>> 4> return ;
>> >>>
>> >>> Now as we are using byvalue when we return the value of head remains 
>> the
>> >>> same old head value. So everytime we call we are traversing the same 
>> old
>> >>> list.
>> >>>
>> >>>  The Random variable can be taken inside the function itself if the 
>> user
>> >>> is not taking the random value.
>> >>>  i.e. int Randomnumber = random();  and now the user can calll Simple
>> >>> Random(head);
>> >>>
>> >>>
>> >>>
>> >>> On Thu, Dec 27, 2012 at 3:31 PM, naveen shukla
>> >>> <naveenshukla...@gmail.com <javascript:>> wrote:
>> >>>>
>> >>>> random node
>> >>>
>> >>>
>> >>> --
>> >>>
>> >>>
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >> With Best Wishes
>> >>
>> >> From:
>> >>
>> >> Naveen Shukla
>> >> IIIT Allahabad
>> >> B.Tech IT 4th year
>> >> Mob No: 07860896972
>> >> E-mail naveenshukla...@gmail.com <javascript:>
>> >>
>> >> --
>> >>
>> >>
>> >
>> > --
>> >
>> >
>>
>>
>>
>> --
>> Udit Agarwal
>> B.Tech. ( Information Technology ) , 7th Semester,
>> Indian Institute of Information Technology
>> Allahabad - 211012, India
>> Email : udit...@gmail.com <javascript:>
>> Mobile: +91-9411656264
>>
>> --
>>
>>
>>
>
>
> -- 
> With Best Wishes
>
> From:
>
> Naveen Shukla
> IIIT Allahabad
> B.Tech IT 4th year
> Mob No: 07860896972
> E-mail naveenshukla...@gmail.com <javascript:> 
>

-- 


Reply via email to