Skip to content

Commit

Permalink
RandomNumberEngine: add the seed() method
Browse files Browse the repository at this point in the history
  • Loading branch information
stephengold committed Feb 7, 2025
1 parent 069e9d0 commit a67f879
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,17 @@ public int nextInt() {

return result;
}

/**
* Seed the engine with the specified value.
*
* @param value the value to use
*/
@Override
public void seed(int value) {
long generatorVa = va();
setSeed(generatorVa, value);
}
// *************************************************************************
// native private methods

Expand All @@ -80,4 +91,6 @@ public int nextInt() {
native private static void free(long generatorVa);

native private static int nextInt(long generatorVa);

native private static void setSeed(long generatorVa, int value);
}
13 changes: 13 additions & 0 deletions src/main/java/com/github/stephengold/joltjni/std/Mt19937.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,17 @@ public int nextInt() {

return result;
}

/**
* Seed the engine with the specified value.
*
* @param value the value to use
*/
@Override
public void seed(int value) {
long generatorVa = va();
setSeed(generatorVa, value);
}
// *************************************************************************
// native private methods

Expand All @@ -78,4 +89,6 @@ public int nextInt() {
native private static void free(long generatorVa);

native private static int nextInt(long generatorVa);

native private static void setSeed(long generatorVa, int value);
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,11 @@ public interface RandomNumberEngine extends ConstJoltPhysicsObject {
* @return an integer value
*/
int nextInt();

/**
* Seed the engine with the specified value.
*
* @param value the value to set
*/
void seed(int value);
}
14 changes: 13 additions & 1 deletion src/main/native/glue/d/DefaultRandomEngine.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright (c) 2024 Stephen Gold
Copyright (c) 2024-2025 Stephen Gold
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -77,4 +77,16 @@ JNIEXPORT jint JNICALL Java_com_github_stephengold_joltjni_std_DefaultRandomEngi
= reinterpret_cast<default_random_engine *> (generatorVa);
default_random_engine::result_type result = (*pGenerator)();
return result;
}

/*
* Class: com_github_stephengold_joltjni_std_DefaultRandomEngine
* Method: setSeed
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_github_stephengold_joltjni_std_DefaultRandomEngine_setSeed
(JNIEnv *, jclass, jlong generatorVa, jint value) {
default_random_engine * const pGenerator
= reinterpret_cast<default_random_engine *> (generatorVa);
pGenerator->seed(value);
}
12 changes: 12 additions & 0 deletions src/main/native/glue/m/Mt19937.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,16 @@ JNIEXPORT jint JNICALL Java_com_github_stephengold_joltjni_std_Mt19937_nextInt
= reinterpret_cast<mt19937 *> (generatorVa);
mt19937::result_type result = (*pGenerator)();
return result;
}

/*
* Class: com_github_stephengold_joltjni_std_Mt19937
* Method: setSeed
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_github_stephengold_joltjni_std_Mt19937_setSeed
(JNIEnv *, jclass, jlong generatorVa, jint value) {
mt19937 * const pGenerator
= reinterpret_cast<mt19937 *> (generatorVa);
pGenerator->seed(value);
}

0 comments on commit a67f879

Please sign in to comment.