Problem Statement
You have a collection of socks of various colors.
You are given a
In the morning you will choose two different socks from your collection uniformly at random. Compute and return the probability that the two random socks will form an acceptable pair.
Definition
- Class:
- RainbowSocks
- Method:
- getPairProb
- Parameters:
- int[], int
- Returns:
- double
- Method signature:
- double getPairProb(int[] socks, int colorDiff)
- (be sure your method is public)
Notes
- Each sock from your collection can be used on either foot.
- Your return value must have an absolute or a relative error smaller than 1e-9.
Constraints
- socks will contain between 2 and 50 elements, inclusive.
- Each element of socks will be between 1 and 50, inclusive.
- colorDiff will be between 0 and 49, inclusive.
Examples
{1, 2, 3, 4, 5, 6, 7}
7
Returns: 1.0
You are not particularly picky, so any pair of socks is acceptable.
{1, 50, 50, 1}
0
Returns: 0.3333333333333333
There are 6 ways to pick a pair of socks from this collection: one pair (1, 1), one pair (50, 50) and four different pairs (1, 50). Only the first two pairs are acceptable.
{44, 14, 24, 31, 30, 32, 46, 23, 27, 2}
24
Returns: 0.8222222222222222
{18, 3, 47, 34, 15, 29, 26, 6, 11, 13, 48, 49, 27, 31, 16, 42, 24, 17, 32, 12, 22, 9, 28, 36, 40, 10, 19, 38, 21, 1, 5, 33, 43, 30, 7, 45, 44, 23, 20, 39, 4, 2, 46, 25, 14, 35, 1, 41, 8, 37}
0
Returns: 8.163265306122449E-4
Two 1 socks, the rest are all different
{19, 4, 48, 35, 16, 30, 27, 7, 12, 14, 49, 38, 28, 32, 17, 43, 25, 18, 33, 13, 23, 10, 29, 37, 41, 11, 20, 39, 22, 2, 6, 34, 44, 31, 8, 46, 45, 24, 21, 40, 5, 3, 47, 26, 15, 36, 1, 42, 9}
0
Returns: 0.0
{3, 1, 33, 41, 39, 21, 27, 7, 47, 9, 43, 15, 25, 13, 49, 29, 19, 17, 37, 11, 45, 5, 23, 31, 35}
1
Returns: 0.0
{42, 50, 10, 22, 34, 6, 2, 18, 38, 14, 26, 46, 30}
3
Returns: 0.0
{45, 10, 5, 35, 30, 50, 25, 20, 40, 15}
4
Returns: 0.0
{1, 36, 33, 23, 49, 40, 9, 30, 18, 6, 44, 14, 27}
2
Returns: 0.0
{42, 2, 12, 34, 8, 29, 46, 38, 18, 23, 50}
3
Returns: 0.0
{17, 37}
15
Returns: 0.0
{4, 45}
41
Returns: 1.0
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}
0
Returns: 1.0
{18, 12, 19, 23, 10, 11, 22, 17, 19, 2, 2, 17, 4, 3, 14, 20, 23, 24, 18, 21, 23, 7, 18, 8, 7, 19, 16, 17, 15, 23, 8, 2, 10, 20, 23, 18, 23, 14, 4, 11, 14, 4}
22
Returns: 1.0
{30, 9, 26, 32, 6, 12, 26, 30, 8, 29, 15, 19, 31, 39, 9, 30, 32, 8, 31, 39, 32, 10}
33
Returns: 1.0
{36, 24, 33, 38, 33, 24, 24, 32, 36, 42, 40, 38, 42, 31, 34, 35, 33, 41, 26, 38, 32, 32, 27, 23, 29, 33, 30, 36, 32, 43, 39}
20
Returns: 1.0
{13, 30, 8, 9, 11, 16, 30, 29, 10, 21, 39, 16, 5, 44, 36, 33, 38, 46, 20, 14, 19, 45, 25, 27, 30}
41
Returns: 1.0
{42, 27, 7, 23, 45, 5, 6, 44, 42, 24, 26, 42}
5
Returns: 0.2878787878787879
{6, 32, 10, 4, 36, 9, 35, 35, 5, 39, 7, 5, 40, 3, 38, 34, 34, 32, 32, 1, 35, 8}
9
Returns: 0.4805194805194805
{10, 11, 8, 8, 13, 11, 13, 13, 28, 26, 28}
8
Returns: 0.5636363636363636
{45, 3, 41, 47, 42, 4, 27, 47, 3, 3, 42, 27, 7, 46, 44, 27, 4, 3, 46, 44, 28, 4, 7, 47, 28, 29, 43, 3}
6
Returns: 0.3333333333333333
{9, 38, 32, 38, 12, 26, 11, 24, 47, 13, 21, 36, 27, 1, 21, 17, 37, 34, 31, 45, 26, 10, 12, 38, 1, 16, 30, 38, 1, 17, 1, 9, 4, 32}
34
Returns: 0.9233511586452763
{9, 8, 42, 5, 21, 14, 42, 49, 14, 14, 16, 1, 47, 46, 45, 25, 7, 8, 12, 7, 24, 41, 46, 26, 9, 46, 36, 15, 27, 33, 31, 35, 40, 25, 42, 10, 38, 33, 11, 4, 47, 26, 6, 43, 23, 2, 17}
21
Returns: 0.635522664199815
{29, 48, 46, 7, 30, 26, 44, 22, 2, 35, 33, 42, 17, 43, 45, 15}
9
Returns: 0.31666666666666665
{8, 40, 3, 26, 21, 15, 6, 10, 1, 29, 44, 11, 10, 24, 9, 5, 31, 40, 32, 26, 13, 36, 10, 46, 27, 28, 38, 23, 43, 8, 26, 50, 49, 28, 27, 19, 42, 33, 30, 44, 13, 24}
15
Returns: 0.5121951219512195
{49, 15, 30, 31, 6, 11, 6, 19, 48, 17, 14, 24, 45, 3, 48, 37, 12, 23, 38, 11, 2, 14, 31, 46, 48, 11, 39, 12}
6
Returns: 0.22486772486772486
{35, 34, 9, 14, 15, 17, 27}
22
Returns: 0.9047619047619048
{26, 39, 50, 50, 33, 4, 49, 21, 16, 22, 8, 26, 23, 23, 8, 18, 23, 18, 9, 36, 5, 3, 23, 39, 12, 38, 5, 30, 14, 28, 14, 40, 16, 15, 41, 50, 20, 41, 20}
2
Returns: 0.09986504723346828
{29, 12, 37, 4, 20, 6}
22
Returns: 0.6666666666666666
{14, 13, 44, 17, 35, 34, 30, 23, 40, 9, 38, 17, 24, 29, 35}
10
Returns: 0.45714285714285713
{34, 7, 12, 6, 44, 23, 36, 5, 11}
26
Returns: 0.6944444444444444
{17, 18, 15, 30, 31, 8, 48, 17, 41, 27, 39, 30, 35, 29, 46, 8, 9, 32, 47, 30, 16, 6, 41, 23, 49, 15, 8, 5}
7
Returns: 0.25132275132275134
{31, 44, 16, 47, 25, 46, 4, 25, 15, 46, 1, 5, 25, 38, 33, 22, 47, 42, 4, 46, 23, 21, 1, 15, 43, 1, 31, 50, 7, 8, 50, 37, 3, 16, 33}
20
Returns: 0.5563025210084034
{38, 4, 27, 33, 4, 32, 9, 43, 16}
1
Returns: 0.05555555555555555
{9, 38, 37, 33, 8, 37, 47, 2, 39, 28, 3, 45, 37, 3, 34, 40, 18, 18, 19, 30, 6, 22, 9, 40, 27, 42, 1, 20, 7, 33, 11, 18, 20, 47}
33
Returns: 0.8805704099821747
{30, 23, 18, 20, 40, 36, 3, 8, 27, 44, 7, 26, 3, 28}
22
Returns: 0.7472527472527473
{26, 6, 23, 6, 11, 8, 15, 34, 8, 9, 11, 11, 6, 7, 35, 35, 31, 2, 6, 21, 39, 10, 30, 15, 6, 36, 42, 10, 15, 16, 24, 43, 21, 46, 48, 31, 3, 14, 16}
13
Returns: 0.5155195681511471
{27, 21, 30, 33, 7, 16, 16, 8, 24, 36}
8
Returns: 0.37777777777777777
{15, 12, 40, 2, 5, 49, 19, 20, 22, 11, 40, 17, 10}
1
Returns: 0.05128205128205128
{25, 37, 33, 50, 13, 5, 29, 48, 11, 47, 13, 20, 22}
7
Returns: 0.20512820512820512
{6, 14, 32, 46, 17, 36, 46, 35, 5, 18, 47, 46, 36, 8, 17, 9, 34, 3, 41, 34, 16}
20
Returns: 0.6047619047619047
{15, 9, 10, 27, 30, 33, 26, 48, 39, 41, 29, 36, 9, 16, 31, 44, 20, 50, 42, 15, 36, 2, 31, 46, 35, 33, 38, 18, 50, 34, 32, 14, 42, 43, 42, 23, 26, 19, 20, 16, 9, 50, 1, 20, 15, 31, 13, 36, 33, 6}
6
Returns: 0.2506122448979592
{7, 32, 15, 44, 16, 2, 11, 18, 37, 44, 31, 30, 37, 25, 2, 14, 43, 23, 29, 4, 22, 29, 23, 38, 11, 37, 23, 43, 42, 24, 14, 1, 7, 28, 46, 24, 31, 6, 41, 17, 50, 24, 46, 38, 48, 47}
12
Returns: 0.41642512077294686
{19, 29, 45, 42, 9, 17, 31, 21, 3, 5, 14, 47, 30, 29, 49, 38, 7, 44, 12, 37, 1, 2}
28
Returns: 0.7575757575757576
{25, 1, 39, 24, 48, 41, 16, 18, 21, 10, 12, 29, 27, 44}
6
Returns: 0.23076923076923078
{49, 17, 29, 28, 45, 29, 16, 1, 22, 29, 40, 23, 32, 45, 26, 7, 45, 15, 32, 44, 7, 47, 12, 28, 7, 25, 8, 35, 18, 9, 15, 16, 25, 46, 46, 20, 24}
8
Returns: 0.31681681681681684
{46, 41, 13, 20, 24, 7, 47, 32, 2, 11}
30
Returns: 0.7777777777777778
{12, 39, 28, 36, 36, 20, 48, 7, 44, 5, 4, 25, 8, 16, 40, 4, 35, 2, 14, 33, 19, 47, 39, 23, 50, 5, 41, 19, 47, 6, 34, 9, 46, 14}
22
Returns: 0.6274509803921569
{35, 43, 38, 30, 49, 41, 7, 8, 9, 46, 12, 43, 47, 27, 26, 18, 25, 16, 40, 25, 20, 32, 45, 16, 39, 30, 26, 34, 45, 21, 15, 30, 16, 5, 11, 14}
23
Returns: 0.765079365079365
{38, 37, 6, 24, 31, 28, 38, 12, 43, 44, 23, 7, 41, 39, 30, 47}
1
Returns: 0.075
{1, 1 }
1
Returns: 1.0