You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2026/02/17 08:36:22 UTC
(commons-rng) branch master updated: Avoid rejection bound that invalidates the test in ArraySamplerTest
This is an automated email from the ASF dual-hosted git repository.
aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git
The following commit(s) were added to refs/heads/master by this push:
new 8253623d Avoid rejection bound that invalidates the test in ArraySamplerTest
8253623d is described below
commit 8253623d49466db0d219cadd3e887d315d6d2631
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Tue Feb 17 08:35:57 2026 +0000
Avoid rejection bound that invalidates the test in ArraySamplerTest
---
.../commons/rng/sampling/ArraySamplerTest.java | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/ArraySamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/ArraySamplerTest.java
index 26c607c4..ea469bc2 100644
--- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/ArraySamplerTest.java
+++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/ArraySamplerTest.java
@@ -577,14 +577,24 @@ class ArraySamplerTest {
};
for (int i = 0; i < 100; i++) {
- // Avoid an index bound of 0 or 1 by adding 2
- final int n = 2 + rng.nextInt(ABOVE_BATCH_LIMIT);
- final int[] bound1 = {n * (n - 1)};
+ // Create the bound.
+ // The random output of zero will only be rejected if
+ // unused bits < (2^32 % bound).
+ // Ensure this threshold is above zero
+ int n = 0;
+ int bound = 1;
+ while ((1L << 32) % bound == 0) {
+ // Avoid an index bound of 0 or 1
+ n = rng.nextInt(2, ABOVE_BATCH_LIMIT);
+ bound = n * (n - 1);
+ }
+ final int[] bound1 = {bound};
final int[] i1 = ArraySampler.randomBounded2(n, n - 1, bound1, rng1);
- final int[] bound2 = {n * (n - 1)};
+ final int[] bound2 = {bound};
final int[] i2 = ArraySampler.randomBounded2(n, n - 1, bound2, rng2);
- Assertions.assertArrayEquals(i1, i2, "indices");
- Assertions.assertArrayEquals(bound1, bound2, "bounds");
+ final int nn = n;
+ Assertions.assertArrayEquals(i1, i2, () -> "indices: n=" + nn);
+ Assertions.assertArrayEquals(bound1, bound2, () -> "bounds: n=" + nn);
}
}