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
commit e5db651768757686064aec6adc845d39e9c3f332 Author: Alex Herbert <aherb...@apache.org> AuthorDate: Fri Nov 22 22:28:17 2019 +0000 [RNG-124]: Add fixed increment PCG generators. Adds a single Long argument constructor to: AbstractPcg6432 PcgXshRr32 PcgXshRs32 PcgRxsMXs64 Adds RandomSource: PCG_XSH_RR_32_OS PCG_XSH_RS_32_OS PCG_RXS_M_XS_64_OS --- .../commons/rng/core/source32/AbstractPcg6432.java | 17 ++++++++++++++ .../commons/rng/core/source32/PcgXshRr32.java | 14 ++++++++++++ .../commons/rng/core/source32/PcgXshRs32.java | 14 ++++++++++++ .../commons/rng/core/source64/PcgRxsMXs64.java | 17 ++++++++++++++ .../org/apache/commons/rng/core/ProvidersList.java | 3 +++ .../commons/rng/core/source32/PcgXshRr32Test.java | 23 ++++++++++++++++++- .../commons/rng/core/source32/PcgXshRs32Test.java | 23 ++++++++++++++++++- .../commons/rng/core/source64/PcgRxsMXs64Test.java | 23 ++++++++++++++++++- .../rng/examples/jmh/RandomSourceValues.java | 3 +++ .../rng/examples/jmh/core/BaselineSources.java | 3 +++ .../apache/commons/rng/simple/RandomSource.java | 26 +++++++++++++++++++++- .../rng/simple/internal/ProviderBuilder.java | 14 +++++++++++- .../apache/commons/rng/simple/ProvidersList.java | 3 +++ .../RandomSourceInternalParametricTest.java | 3 +++ 14 files changed, 181 insertions(+), 5 deletions(-) diff --git a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/AbstractPcg6432.java b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/AbstractPcg6432.java index 3a592ee..f499144 100644 --- a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/AbstractPcg6432.java +++ b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/AbstractPcg6432.java @@ -30,6 +30,8 @@ import org.apache.commons.rng.core.util.NumberFactory; abstract class AbstractPcg6432 extends IntProvider { /** Size of the seed array. */ private static final int SEED_SIZE = 2; + /** The default increment. */ + private static final long DEFAULT_INCREMENT = 1442695040888963407L; /** The state of the LCG. */ private long state; @@ -38,11 +40,26 @@ abstract class AbstractPcg6432 extends IntProvider { private long increment; /** + * Creates a new instance using a default increment. + * + * @param seed Initial state. + * @since 1.4 + */ + AbstractPcg6432(Long seed) { + increment = DEFAULT_INCREMENT; + state = bump(seed + this.increment); + } + + /** * Creates a new instance. * * @param seed Initial seed. * If the length is larger than 2, only the first 2 elements will * be used; if smaller, the remaining elements will be automatically set. + * + * <p>The 1st element is used to set the LCG state. The 2nd element is used + * to set the LCG increment; the most significant bit + * is discarded by left shift and the increment is set to odd.</p> */ AbstractPcg6432(long[] seed) { if (seed.length < SEED_SIZE) { diff --git a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRr32.java b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRr32.java index 27c22b3..0ebce0c 100644 --- a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRr32.java +++ b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRr32.java @@ -29,11 +29,25 @@ package org.apache.commons.rng.core.source32; */ public class PcgXshRr32 extends AbstractPcg6432 { /** + * Creates a new instance using a default increment. + * + * @param seed Initial state. + * @since 1.4 + */ + public PcgXshRr32(Long seed) { + super(seed); + } + + /** * Creates a new instance. * * @param seed Initial seed. * If the length is larger than 2, only the first 2 elements will * be used; if smaller, the remaining elements will be automatically set. + * + * <p>The 1st element is used to set the LCG state. The 2nd element is used + * to set the LCG increment; the most significant bit + * is discarded by left shift and the increment is set to odd.</p> */ public PcgXshRr32(long[] seed) { super(seed); diff --git a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRs32.java b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRs32.java index c7ee68a..438fc38 100644 --- a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRs32.java +++ b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source32/PcgXshRs32.java @@ -29,11 +29,25 @@ package org.apache.commons.rng.core.source32; */ public class PcgXshRs32 extends AbstractPcg6432 { /** + * Creates a new instance using a default increment. + * + * @param seed Initial state. + * @since 1.4 + */ + public PcgXshRs32(Long seed) { + super(seed); + } + + /** * Creates a new instance. * * @param seed Initial seed. * If the length is larger than 2, only the first 2 elements will * be used; if smaller, the remaining elements will be automatically set. + * + * <p>The 1st element is used to set the LCG state. The 2nd element is used + * to set the LCG increment; the most significant bit + * is discarded by left shift and the increment is set to odd.</p> */ public PcgXshRs32(long[] seed) { super(seed); diff --git a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/PcgRxsMXs64.java b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/PcgRxsMXs64.java index 3ac9ddd..e542c2c 100644 --- a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/PcgRxsMXs64.java +++ b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/PcgRxsMXs64.java @@ -32,6 +32,8 @@ import org.apache.commons.rng.core.util.NumberFactory; public class PcgRxsMXs64 extends LongProvider { /** Size of the seed array. */ private static final int SEED_SIZE = 2; + /** The default increment. */ + private static final long DEFAULT_INCREMENT = 1442695040888963407L; /** The state of the LCG. */ private long state; @@ -40,11 +42,26 @@ public class PcgRxsMXs64 extends LongProvider { private long increment; /** + * Creates a new instance using a default increment. + * + * @param seed Initial state. + * @since 1.4 + */ + public PcgRxsMXs64(Long seed) { + increment = DEFAULT_INCREMENT; + state = bump(seed + this.increment); + } + + /** * Creates a new instance. * * @param seed Initial seed. * If the length is larger than 2, only the first 2 elements will * be used; if smaller, the remaining elements will be automatically set. + * + * <p>The 1st element is used to set the LCG state. The 2nd element is used + * to set the LCG increment; the most significant bit + * is discarded by left shift and the increment is set to odd.</p> */ public PcgRxsMXs64(long[] seed) { if (seed.length < SEED_SIZE) { diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersList.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersList.java index 6a0282b..620a5cc 100644 --- a/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersList.java +++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersList.java @@ -112,7 +112,9 @@ public final class ProvidersList { add(LIST32, new XoShiRo128Plus(new int[] {g.nextInt(), g.nextInt(), g.nextInt()})); add(LIST32, new XoShiRo128StarStar(new int[] {g.nextInt(), g.nextInt(), g.nextInt()})); add(LIST32, new PcgXshRr32(new long[] {g.nextLong()})); + add(LIST32, new PcgXshRr32(g.nextLong())); add(LIST32, new PcgXshRs32(new long[] {g.nextLong()})); + add(LIST32, new PcgXshRs32(g.nextLong())); add(LIST32, new PcgMcgXshRr32(g.nextLong())); add(LIST32, new PcgMcgXshRs32(g.nextLong())); // Ensure a high complexity increment is used for the Weyl sequence @@ -136,6 +138,7 @@ public final class ProvidersList { add(LIST64, new XoShiRo512Plus(new long[] {g.nextLong(), g.nextLong(), g.nextLong(), g.nextLong()})); add(LIST64, new XoShiRo512StarStar(new long[] {g.nextLong(), g.nextLong(), g.nextLong(), g.nextLong()})); add(LIST64, new PcgRxsMXs64(new long[] {g.nextLong()})); + add(LIST64, new PcgRxsMXs64(g.nextLong())); add(LIST64, new DotyHumphreySmallFastCounting64(new long[] {g.nextLong(), g.nextLong()})); add(LIST64, new JenkinsSmallFast64(g.nextLong())); add(LIST64, new XoRoShiRo128PlusPlus(new long[] {g.nextLong(), g.nextLong()})); diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRr32Test.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRr32Test.java index b744ac1..e29c165 100644 --- a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRr32Test.java +++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRr32Test.java @@ -24,7 +24,7 @@ public class PcgXshRr32Test { @Test public void testReferenceCode() { /* - * Tested with respect to pcg_engines::setseq_xsh_rr_64_32 of the C++ implementation. + * Tested with respect to pcg_engines::setseq_xsh_rr_64_32(x, y) of the C++ implementation. * See : http://www.pcg-random.org/download.html#cpp-implementation */ final int[] expectedSequence = { @@ -43,4 +43,25 @@ public class PcgXshRr32Test { 0x012de1babb3c4104L, 0xc8161b4202294965L })); } + + @Test + public void testReferenceCodeFixedIncrement() { + /* + * Tested with respect to pcg_engines::setseq_xsh_rr_64_32(x) of the C++ implementation. + * See : http://www.pcg-random.org/download.html#cpp-implementation + */ + final int[] expectedSequence = { + 0x0d2d5291, 0x45df90aa, 0xc60f3fb7, 0x06694f16, + 0x29563e6f, 0x42f46063, 0xf2be5583, 0x30360e91, + 0x36385531, 0xddd36cd9, 0x5f4a6535, 0x644d10c0, + 0xaca075d7, 0x33781706, 0x4e1f9f34, 0x0676e286, + 0xaca5eeb2, 0x7315cc93, 0xa6dfefe2, 0xd480e065, + 0xda9da26f, 0xda0f27b7, 0x045c0844, 0x22acfa0f, + 0xcd7ecd75, 0xb97fd692, 0xac96dd03, 0xf59c7174, + 0x488947fe, 0x64a3d543, 0x90963884, 0x4adee0bb, + 0x993cf7c0, 0x8545b3f2, 0x409b542d, 0x6bf0a247, + 0xfd59f9b4, 0x8f50b06e, 0x1bbcf6f5, 0xe1fdd29c, + }; + RandomAssert.assertEquals(expectedSequence, new PcgXshRr32(0x012de1babb3c4104L)); + } } diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRs32Test.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRs32Test.java index 1d8ef51..dd751ff 100644 --- a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRs32Test.java +++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source32/PcgXshRs32Test.java @@ -24,7 +24,7 @@ public class PcgXshRs32Test { @Test public void testReferenceCode() { /* - * Tested with respect to pcg_engines::setseq_xsh_rs_64_32 from the C++ implementation. + * Tested with respect to pcg_engines::setseq_xsh_rs_64_32(x, y) from the C++ implementation. * See : http://www.pcg-random.org/download.html#cpp-implementation */ final int[] expectedSequence = { @@ -43,4 +43,25 @@ public class PcgXshRs32Test { 0x012de1babb3c4104L, 0xc8161b4202294965L })); } + + @Test + public void testReferenceCodeFixedIncrement() { + /* + * Tested with respect to pcg_engines::setseq_xsh_rs_64_32(x) from the C++ implementation. + * See : http://www.pcg-random.org/download.html#cpp-implementation + */ + final int[] expectedSequence = { + 0x5ab2ddd9, 0x215c476c, 0x83c34b11, 0xe2c5e213, + 0x37979624, 0x303cf5b5, 0xbf2a146e, 0xb0692351, + 0x49b00de3, 0xd9ded67c, 0x298e2bb9, 0xa20d2287, + 0xa067cd33, 0x5c10d395, 0x1f8d8bd5, 0x4306b6bc, + 0x97a3e50b, 0x992e0604, 0x8a982b33, 0x4baa6604, + 0xefd995eb, 0x0f341c29, 0x080bce32, 0xb22b3de2, + 0x5fbf47ff, 0x7fc928bf, 0x075a5871, 0x174a0c48, + 0x72458b67, 0xa869a8c1, 0x64857577, 0xed28377c, + 0x3ce86b48, 0xa855af8b, 0x6a051d88, 0x23b06c33, + 0xb3e4afc1, 0xa848c3e4, 0x79f969a6, 0x670e2acb, + }; + RandomAssert.assertEquals(expectedSequence, new PcgXshRs32(0x012de1babb3c4104L)); + } } diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/PcgRxsMXs64Test.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/PcgRxsMXs64Test.java index dac1191..af29eb8 100644 --- a/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/PcgRxsMXs64Test.java +++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/source64/PcgRxsMXs64Test.java @@ -24,7 +24,7 @@ public class PcgRxsMXs64Test { @Test public void testReferenceCode() { /* - * Tested with respect to pcg_engines::setseq_rxs_m_xs_64_64 of the C++ implementation. + * Tested with respect to pcg_engines::setseq_rxs_m_xs_64_64(x, y) of the C++ implementation. * See : http://www.pcg-random.org/download.html#cpp-implementation */ final long[] expectedSequence = { @@ -43,4 +43,25 @@ public class PcgRxsMXs64Test { 0x012de1babb3c4104L, 0xc8161b4202294965L })); } + + @Test + public void testReferenceCodeFixedIncrement() { + /* + * Tested with respect to pcg_engines::setseq_rxs_m_xs_64_64(x) of the C++ implementation. + * See : http://www.pcg-random.org/download.html#cpp-implementation + */ + final long[] expectedSequence = { + 0xa5ace6c92c5fa6c7L, 0xac02118387228764L, 0xa6e796e49dc36e00L, 0x4713f32552134368L, + 0xa2ad36cb4e6b7cc9L, 0x6bbce7db898fa11dL, 0x134cb18300fe9eb0L, 0x3f705c0d635cbc23L, + 0x4bd7531b62a59b62L, 0x413cc95f3c3e9952L, 0xbc77749b270d987cL, 0xd2c74089bc6489f5L, + 0xc2debc07a31bb1a8L, 0x5163cfcc77ebd4fbL, 0x6f41b5621cba1b2dL, 0x72dd618ae82f792fL, + 0x76888898287eeaa2L, 0xf5c7de46ad2739a0L, 0xc9d63bfe7b405a66L, 0xefc0161a3119efd0L, + 0xbc7a7e23220b53c8L, 0x6efb5e3e2b510988L, 0xe70ce3d64ed4ee82L, 0x3e5c15687252a94dL, + 0x95530066e3a7f3a6L, 0x6c9a303ab74d9a21L, 0x93ff7e36cf46cdeaL, 0xd5173d3428745856L, + 0x4fb30e4c6e8bf68eL, 0x6466bbcaf078ad4fL, 0x846768c1bd451c96L, 0xd9c7d6b4aabce95dL, + 0x4f789941d453a26fL, 0x802e40798afb9cf9L, 0x4f9fd27240f2303bL, 0xb9c25cd3e029e4eaL, + 0x7d8ecedb3334b077L, 0x9011d404cf44b7c7L, 0xe6f26367c52b12a6L, 0xcbfb6a1dd20f2df4L, + }; + RandomAssert.assertEquals(expectedSequence, new PcgRxsMXs64(0x012de1babb3c4104L)); + } } diff --git a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/RandomSourceValues.java b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/RandomSourceValues.java index 2926bd7..bbcb1be 100644 --- a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/RandomSourceValues.java +++ b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/RandomSourceValues.java @@ -82,6 +82,9 @@ public class RandomSourceValues { "XO_RO_SHI_RO_1024_PP", "XO_RO_SHI_RO_1024_S", "XO_RO_SHI_RO_1024_SS", + "PCG_XSH_RR_32_OS", + "PCG_XSH_RS_32_OS", + "PCG_RXS_M_XS_64_OS", }) private String randomSourceName; diff --git a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/BaselineSources.java b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/BaselineSources.java index bff6366..78a0dbd 100644 --- a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/BaselineSources.java +++ b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/core/BaselineSources.java @@ -104,6 +104,9 @@ public abstract class BaselineSources { "XO_RO_SHI_RO_1024_PP", "XO_RO_SHI_RO_1024_S", "XO_RO_SHI_RO_1024_SS", + "PCG_XSH_RR_32_OS", + "PCG_XSH_RS_32_OS", + "PCG_RXS_M_XS_64_OS", }) private String randomSourceName; diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java index 9164a2c..65ca02f 100644 --- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java +++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java @@ -542,7 +542,31 @@ public enum RandomSource { * </ul> * @since 1.3 */ - XO_RO_SHI_RO_1024_SS(ProviderBuilder.RandomSourceInternal.XO_RO_SHI_RO_1024_SS); + XO_RO_SHI_RO_1024_SS(ProviderBuilder.RandomSourceInternal.XO_RO_SHI_RO_1024_SS), + /** + * Source of randomness is {@link org.apache.commons.rng.core.source32.PcgXshRr32}. + * <ul> + * <li>Native seed type: {@code Long}.</li> + * </ul> + * @since 1.4 + */ + PCG_XSH_RR_32_OS(ProviderBuilder.RandomSourceInternal.PCG_XSH_RR_32_OS), + /** + * Source of randomness is {@link org.apache.commons.rng.core.source32.PcgXshRs32}. + * <ul> + * <li>Native seed type: {@code Long}.</li> + * </ul> + * @since 1.4 + */ + PCG_XSH_RS_32_OS(ProviderBuilder.RandomSourceInternal.PCG_XSH_RS_32_OS), + /** + * Source of randomness is {@link org.apache.commons.rng.core.source64.PcgRxsMXs64}. + * <ul> + * <li>Native seed type: {@code Long}.</li> + * </ul> + * @since 1.4 + */ + PCG_RXS_M_XS_64_OS(ProviderBuilder.RandomSourceInternal.PCG_RXS_M_XS_64_OS); /** Internal identifier. */ private final ProviderBuilder.RandomSourceInternal internalIdentifier; diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java index 790b020..5b092fa 100644 --- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java +++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java @@ -354,7 +354,19 @@ public final class ProviderBuilder { /** Source of randomness is {@link XoRoShiRo1024StarStar}. */ XO_RO_SHI_RO_1024_SS(XoRoShiRo1024StarStar.class, 16, - NativeSeedType.LONG_ARRAY); + NativeSeedType.LONG_ARRAY), + /** Source of randomness is {@link PcgXshRr32}. */ + PCG_XSH_RR_32_OS(PcgXshRr32.class, + 1, + NativeSeedType.LONG), + /** Source of randomness is {@link PcgXshRs32}. */ + PCG_XSH_RS_32_OS(PcgXshRs32.class, + 1, + NativeSeedType.LONG), + /** Source of randomness is {@link PcgRxsMXs64}. */ + PCG_RXS_M_XS_64_OS(PcgRxsMXs64.class, + 1, + NativeSeedType.LONG); /** Source type. */ private final Class<? extends UniformRandomProvider> rng; diff --git a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersList.java b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersList.java index 26c87cb..3fcf119 100644 --- a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersList.java +++ b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersList.java @@ -65,6 +65,8 @@ public final class ProvidersList { add(LIST32, RandomSource.MSWS, new long[] {687233648L, 678656564562300L, 0xb5ad4eceda1ce2a9L}); add(LIST32, RandomSource.SFC_32, new int[] {-23574234, 7654343}); add(LIST32, RandomSource.XO_SHI_RO_128_PP, new int[] {8796823, -3244890, -263842}); + add(LIST32, RandomSource.PCG_XSH_RR_32_OS, 72346247L); + add(LIST32, RandomSource.PCG_XSH_RS_32_OS, -5340832872354L); // ... add more here. // "long"-based RNGs. @@ -88,6 +90,7 @@ public final class ProvidersList { add(LIST64, RandomSource.XO_RO_SHI_RO_1024_PP, new long[] {236424345654L, 781544546164721L, -85235476312346L}); add(LIST64, RandomSource.XO_RO_SHI_RO_1024_S, new long[] {-1574314L, 7879874453221215L, -7894343883216L}); add(LIST64, RandomSource.XO_RO_SHI_RO_1024_SS, new long[] {-41514541234654321L, -12146412316546L, 7984134134L}); + add(LIST64, RandomSource.PCG_RXS_M_XS_64_OS, -34657834534L); // ... add more here. // Do not modify the remaining statements. diff --git a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/RandomSourceInternalParametricTest.java b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/RandomSourceInternalParametricTest.java index 737b73c..4c8f118 100644 --- a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/RandomSourceInternalParametricTest.java +++ b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/RandomSourceInternalParametricTest.java @@ -97,6 +97,9 @@ public class RandomSourceInternalParametricTest { EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_RO_SHI_RO_1024_PP, longBytes * 16); EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_RO_SHI_RO_1024_S, longBytes * 16); EXPECTED_SEED_BYTES.put(RandomSourceInternal.XO_RO_SHI_RO_1024_SS, longBytes * 16); + EXPECTED_SEED_BYTES.put(RandomSourceInternal.PCG_XSH_RR_32_OS, longBytes); + EXPECTED_SEED_BYTES.put(RandomSourceInternal.PCG_XSH_RS_32_OS, longBytes); + EXPECTED_SEED_BYTES.put(RandomSourceInternal.PCG_RXS_M_XS_64_OS, longBytes); // ... add more here. // Verify the seed byte size is reflected in the enum javadoc for RandomSource. }