MCPcopy Create free account
hub / github.com/numpy/numpy / random_hypergeometric_hyp

Function random_hypergeometric_hyp

numpy/random/src/legacy/legacy-distributions.c:263–286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

261
262
263static RAND_INT_TYPE random_hypergeometric_hyp(bitgen_t *bitgen_state,
264 RAND_INT_TYPE good,
265 RAND_INT_TYPE bad,
266 RAND_INT_TYPE sample) {
267 RAND_INT_TYPE d1, k, z;
268 double d2, u, y;
269
270 d1 = bad + good - sample;
271 d2 = (double)MIN(bad, good);
272
273 y = d2;
274 k = sample;
275 while (y > 0.0) {
276 u = next_double(bitgen_state);
277 y -= (RAND_INT_TYPE)floor(u + y / (d1 + k));
278 k--;
279 if (k == 0)
280 break;
281 }
282 z = (RAND_INT_TYPE)(d2 - y);
283 if (good > bad)
284 z = sample - z;
285 return z;
286}
287
288/* D1 = 2*sqrt(2/e) */
289/* D2 = 3 - 2*sqrt(3/e) */

Callers 1

Calls 2

next_doubleFunction · 0.85
floorFunction · 0.85

Tested by

no test coverage detected