@Udit: Here is the proof: At step k, node k is selected with probability 
1/k. On the (k+1)st step, node k is replaced with probability 1/(k+1). Thus 
it is retained with probability 1 - 1/(k+1) = k/(k+1). On subsequent steps, 
node k is retained with probabilities (k+1)/(k+2), (k+2)/(k+3), ..., 
(n-1)/n. Thus, node k is selected on the kth step and then retained until 
the end of the list with probability 1/k * k/(k+1) * (k+1)/(k+2) * ... * 
(n-1) / n. Each denominator cancels with the succeeding numerator, so the 
product collapses to 1/n.
 
Dave

On Friday, December 28, 2012 10:46:17 AM UTC-6, Udit Agarwal wrote:

> @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_an...@juno.com <javascript:>> 
> 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 : udit...@gmail.com <javascript:> 
> Mobile: +91-9411656264 
>

-- 


Reply via email to