Hi Lucifer,
          Have you checked the sum of probability of (a winning + b
winning + c winning + draw)==1 ?

On Jan 22, 2:38 pm, Lucifer <sourabhd2...@gmail.com> wrote:
> @above
>
> editing mistake.. (btw the working code covers it)
> /*
> int j =*1*;
> for(int i = 0; i < 12 ; i+=2)
> {
>     A[i] = A[i+1] = A[22-i] = A[21-i] = j;
>     ++j;}
>
> */
> On Jan 22, 6:53 pm, Lucifer <sourabhd2...@gmail.com> wrote:
>
>
>
>
>
>
>
> > @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.

Reply via email to