@Dave: U said that the node p returned will be assigned to some kth
node with probability 1/k. then the probability for p to be assigned
to 1,2,3... nodes would be like 1/1, 1/2, 1/3, and so on.. the how is
the node p is assigned with uniform probability.

On Fri, Dec 28, 2012 at 7:35 PM, Dave <dave_and_da...@juno.com> wrote:
> @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> 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> wrote:
>>> > You said : "Given a linked list of infinite length"
>>> >
>>> > On Thu, Dec 27, 2012 at 4:06 PM, naveen shukla
>>> > <naveenshukla...@gmail.com> 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>
>>>
>>> >> 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> wrote:
>>> >>>>
>>> >>>> random node
>>> >>>
>>> >>>
>>> >>> --
>>> >>>
>>> >>>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> With Best Wishes
>>> >>
>>> >> From:
>>> >>
>>> >> Naveen Shukla
>>> >> IIIT Allahabad
>>> >> B.Tech IT 4th year
>>> >> Mob No: 07860896972
>>> >> E-mail naveenshukla...@gmail.com
>>> >>
>>> >> --
>>> >>
>>> >>
>>> >
>>> > --
>>> >
>>> >
>>>
>>>
>>>
>>> --
>>> Udit Agarwal
>>> B.Tech. ( Information Technology ) , 7th Semester,
>>> Indian Institute of Information Technology
>>> Allahabad - 211012, India
>>> Email : udit...@gmail.com
>>> Mobile: +91-9411656264
>>>
>>> --
>>>
>>>
>>
>>
>>
>> --
>> With Best Wishes
>>
>> From:
>>
>> Naveen Shukla
>> IIIT Allahabad
>> B.Tech IT 4th year
>> Mob No: 07860896972
>> E-mail naveenshukla...@gmail.com
>
> --
>
>



-- 
Udit Agarwal
B.Tech. ( Information Technology ) , 7th Semester,
Indian Institute of Information Technology
Allahabad - 211012, India
Email : uditii...@gmail.com
Mobile: +91-9411656264

-- 


Reply via email to