@Don.. Well i will explain the approach that i took to arrive at the probability.. Well yes u are correct in saying that it doesn't make a lot of sense but then the no. of wins by a1 keeping in mind that a1 > a2 + a3 is much less than a1 <= a2 + a3.. Or may be I have gone wrong in calculating the same..
Please let me know if u find some issue in the below given explanation.. -------------------------------- now, the given nos. are 1,2,3,4,.....13.. Hence, the possible pair sums are 3,4,5,....,25... The total no. of pairs that can be formed are 13 C 2 = 78. Now, for each pair within 3-25 (including both extremes) lets find the no. of ways we get to the particular sum. i.e for 3 its 1 ( 1 + 2) for 7 its 3 (1 + 6, 2 + 5, 3 + 4) Lets take an array A[23], to store the count of occurrences for pair sums (3 - 25) A[i] -> will store the no. of ways of getting 'i+3' pair-sum A[i] values will be: i -> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 A[i] -> 1 1 2 2 3 3 4 4 5 5 6 6 6 5 5 4 4 3 3 2 2 1 1 Now, the above can be generated by using the following code: Lets say the input is stored in X[R] = {1,2, ..., 13} Here R is 13.. Lets say, the array A is initialized with 0. for (int i = 0; i < R-1; ++i) for ( int j = 1; i < R; ++j) ++A[ X[i] + X[j] ]; Well, as the nos. are continuous , hence we can minimize the initialization operation as follows (based on fact that there is a pattern and holds for any set of continuous nos. from 1 to K) // initialze pair counts.. ( 3 ... 25) int j =0; for(int i = 0; i < 12 ; i+=2) { A[i] = A[i+1] = A[22-i] = A[21-i] = j; ++j; } a[12] = 6; [ the above code is specifically written for 1 to 13 (K), but you can generalize it based on ur need. All you need to do is take care of the last initialization statement "a[12] = 6;" based on value K (13).] -------------------------------- Now, A[i] basically represent the no. of ways we can get 'i+3' -> lets say this is a1's current pick. Now, for sum of a2 and a3's pick to be smaller than a1's we can do the following: If A[i] is picked by a1, then let a2 pick A[p] where p < i, then the possible picks by a3 would be from anywhere b/w A[p] to A[i - p - 1]. Here, there is a catch .. we need to insure that i - p -1 > = p otherwise the range for a3's pick would be invalid. Also, the above explanation is based on the assumption that a2 <=a3. Hence, to complete figure out all the possibilities of a1, a2 and a3, we need to do the following.. For a given pick by a1 say A[i], then the no. of possiblites such that a1> a2 + a3 would be: 1) if a2=a3, A[p] * A[p] * A[i] 2) if a2!=a3 , 2 * A[p] *( cumulative sum of A[p+1] to A[i - p -1]) *A[i] [ a factor of 2 is multiplied to remove the assumption a2 < a3 ] Now, once we get the total no. of possibities by the above given equation, the probability would be: (No. of possiblites) / (78^3) .. [ 78 -> 13 C 2] Code: int a[23];// to store the count int b[23];// to store the cumulative count int k = 1; // initialze pair counts.. ( 3 ... 25) for(int i = 0; i <12; i+=2) { a[i] = a[i+1] = a[22-i] = a[21-i] = k; ++k; } a[12] = 6; b[0]=a[0]; //cumulative sum for(int i = 1; i <23; i+=1) { b[i] = b[i-1] + a[i]; } // calculate possibilities.. // i =0 (3 :minimum sum pair)... i=22 (25 : max sum pair) int sampleCount = 0; for(int i =0; i <23; ++i) { for(int j = 0; j <i; ++j) { if(i - j - 1 >= j) { sampleCount += a[j] * a[j] * a[i]; if (i - j - 1 > j) sampleCount += 2 * a[j] * (b[i-j-1] - b[j]) * a[i]; } } } int R = 78*78*78; printf("probability = %f ", (float)sampleCount / R); -------------------------------------------- Don, as I mentioned in the start that there is possibility i might have gone wrong in calculation. The fact being that i missed the factor 2 when i wrote the code. But, then the main point here is that whether the approach is correct or not. --------------------------------------------- On Jan 20, 3:41 am, Don <dondod...@gmail.com> wrote: > You are saying that a1 wins roughly 1 in 20 times? How does that make > any sence? > Don > > On Jan 19, 2:35 pm, Lucifer <sourabhd2...@gmail.com> wrote: > > > > > > > > > @correction: > > > Probalilty (a1 wins) = 24575/474552 = .051786 > > > On Jan 20, 1:30 am, Lucifer <sourabhd2...@gmail.com> wrote: > > > > hoping that the cards are numbered 1,2,3,....,13.. > > > > Probalilty (a1 wins) = 21723/474552 = .045776 > > > > On Jan 20, 12:47 am, Don <dondod...@gmail.com> wrote: > > > > > P= 8800/28561 ~= 0.308112461... > > > > > On Jan 18, 7:40 pm, Sundi <sundi...@gmail.com> wrote: > > > > > > there are 52 cards.. there are 3 players a1,a2,a3 each player is given > > > > > 2 cards each one of A=2...J=11,Q=12,K=13..a user wins if his sum of > > > > > cards is greater then the other two players sum. > > > > > > find the probability of a1 being the winner?- Hide quoted text - > > > - Show quoted text - -- 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.