Problem Statement
Your friend Psycho Sid has challenged you to a game. He has a bag containing redCount red marbles and blueCount blue marbles. There will be an odd number of marbles in the bag, and you go first. On your turn, you reach into the bag and remove a random marble from the bag; each marble may be selected with equal probability. After your turn is over, Sid will reach into the bag and remove a blue marble; if there is no blue marble for Sid to remove, then he wins. If the final marble removed from the bag is blue, you will win. Otherwise, Sid wins.
Given the number of red and blue marbles in the bag, determine the probability that you win the game.
Definition
- Class:
- MarblesInABag
- Method:
- getProbability
- Parameters:
- int, int
- Returns:
- double
- Method signature:
- double getProbability(int redCount, int blueCount)
- (be sure your method is public)
Notes
- A return value with either an absolute or relative error of less than 1.0e-9 is considered correct.
Constraints
- redCount will be between 0 and 4000, inclusive.
- blueCount will be between 0 and 4000, inclusive.
- The sum of redCount and blueCount will be odd.
Examples
1
2
Returns: 0.3333333333333333
Here you have a 1/3 chance of pulling out the red marble on your first turn. If you pull a blue marble, Sid will remove the other blue marble and you lose.
2
3
Returns: 0.13333333333333333
Here you must remove both red marbles on consecutive pulls. This will happen 2/15 of the time.
2
5
Returns: 0.22857142857142856
11
6
Returns: 0.0
Here you can never win.
319
3000
Returns: 1.0789966341876459E-9
Very small (but non zero) probability of winning.
318
2969
Returns: 1.0014681368677624E-9
0
13
Returns: 1.0
369
4000
Returns: 1.027386377638627E-9
3999
4000
Returns: 0.0
Largest run time possible case currently.
4
11
Returns: 0.12183372183372182
41
2468
Returns: 0.2857738903477601
233
2500
Returns: 7.400574775634656E-7
316
3725
Returns: 4.8158789702632905E-8
135
3478
Returns: 0.009291698497459073
46
2963
Returns: 0.27599774658315296
145
1706
Returns: 1.3398675593468236E-4
82
3281
Returns: 0.08465914427175113
49
1962
Returns: 0.16783155660153382
299
3942
Returns: 4.4535674142703256E-7
82
1437
Returns: 0.013213023238952888
39
2604
Returns: 0.31841140007676555
153
3902
Returns: 0.005755807316760704
29
382
Returns: 0.07349514473114374
142
2717
Returns: 0.0023890683868597953
371
3896
Returns: 5.19113853670316E-10
144
1727
Returns: 1.606658463836652E-4
277
3538
Returns: 7.601962589424384E-7
186
3913
Returns: 0.0010261767307635475
166
2299
Returns: 1.6370093111230552E-4
103
1894
Returns: 0.007330283649328616
70
3811
Returns: 0.15933479136057596
233
3322
Returns: 1.423300148373267E-5
66
1673
Returns: 0.05533271387815977
314
3711
Returns: 5.471596399392672E-8
253
2868
Returns: 5.361268623796721E-7
154
3645
Returns: 0.004196501433766912
66
757
Returns: 0.0065450699298992485
37
860
Returns: 0.12118554773860966
72
1741
Returns: 0.04219075266984772
77
3530
Returns: 0.11386716585379968
31
3036
Returns: 0.44683943441800783
184
2191
Returns: 2.310947760364422E-5
28
2107
Returns: 0.41327155268717336
94
1041
Returns: 0.0012351966635389174
264
3265
Returns: 9.126378309582937E-7
344
3805
Returns: 4.875851478757178E-9
272
3891
Returns: 3.2747879340481335E-6
37
3350
Returns: 0.394299209600666
300
3101
Returns: 1.4615031054310325E-8
39
3548
Returns: 0.38431787577451304
623
3630
Returns: 3.904405782452034E-26
84
3955
Returns: 0.10462954858990839
2756
3841
Returns: 0.0
966
3377
Returns: 4.4613505531156827E-64
1931
2308
Returns: 0.0
944
439
Returns: 0.0
626
3323
Returns: 1.3146792913491548E-28
1537
1538
Returns: 0.0
118
2083
Returns: 0.0037330326851001167
2929
542
Returns: 0.0
833
3116
Returns: 4.431535401569654E-52
4000
3999
Returns: 0.0
1
0
Returns: 0.0
3
0
Returns: 0.0
3999
0
Returns: 0.0
0
1
Returns: 1.0
0
3
Returns: 1.0
0
3999
Returns: 1.0
2999
4000
Returns: 0.0
100
3999
Returns: 0.06012370032768307
2001
4000
Returns: 2.67852391672556E-231
3998
3999
Returns: 0.0
1999
3998
Returns: 6.037207771130375E-231
3169
3998
Returns: 0.0
1999
4000
Returns: 8.052952917314544E-231
2000
3999
Returns: 4.021460617208094E-231
11
2000
Returns: 0.7198760401207562
3001
4000
Returns: 0.0
2567
3984
Returns: 0.0
160
1973
Returns: 9.285636197148742E-5
3999
3998
Returns: 0.0
3000
3001
Returns: 0.0
201
4000
Returns: 4.904044392672374E-4
101
4000
Returns: 0.05795115870026031
201
3998
Returns: 4.889608126783985E-4
123
4000
Returns: 0.02427047111705665
3000
3901
Returns: 0.0
3213
4000
Returns: 0.0
50
3999
Returns: 0.3044221915596899
1500
3999
Returns: 9.184597965197581E-129
3
6
Returns: 0.11428571428571427
2893
3678
Returns: 0.0
2000
2871
Returns: 0.0
301
2000
Returns: 2.585211360800066E-12
2000
1999
Returns: 0.0
500
3999
Returns: 3.5323439031614692E-16
4
501
Returns: 0.7889006745979239
1520
3999
Returns: 3.164747715787049E-132
1169
3998
Returns: 1.2245073481844732E-78
600
1201
Returns: 2.0923709784403826E-71
3007
3952
Returns: 0.0
1501
4000
Returns: 6.67130302438379E-129
3800
3901
Returns: 0.0
49
4000
Returns: 0.3130582472631488
3981
4000
Returns: 0.0
2100
3301
Returns: 1.0075407E-317
999
4000
Returns: 6.214680600113773E-58
3990
3999
Returns: 0.0
2673
2890
Returns: 0.0