@@ -134,6 +134,28 @@ def test_sample_inf_weights(self, obj):
134
134
with pytest .raises (ValueError , match = msg ):
135
135
obj .sample (n = 3 , weights = weights_with_ninf )
136
136
137
+ def test_sample_unit_probabilities_raises (self , obj ):
138
+ # GH#61516
139
+ high_variance_weights = [1 ] * 10
140
+ high_variance_weights [0 ] = 100
141
+ msg = (
142
+ "Invalid weights: If `replace`=False, "
143
+ "total unit probabilities have to be less than 1"
144
+ )
145
+ with pytest .raises (ValueError , match = msg ):
146
+ obj .sample (n = 2 , weights = high_variance_weights , replace = False )
147
+
148
+ # edge case, n*max(weights)/sum(weights) == 1
149
+ edge_variance_weights = [1 ] * 10
150
+ edge_variance_weights [0 ] = 9
151
+ # should not raise
152
+ obj .sample (n = 2 , weights = edge_variance_weights , replace = False )
153
+
154
+ low_variance_weights = [1 ] * 10
155
+ low_variance_weights [0 ] = 8
156
+ # should not raise
157
+ obj .sample (n = 2 , weights = low_variance_weights , replace = False )
158
+
137
159
def test_sample_zero_weights (self , obj ):
138
160
# All zeros raises errors
139
161
0 commit comments