Random Numbers in Squirrel
Here’s the translation of the Go code to Java, along with explanations in Markdown format suitable for Hugo:
Java’s java.util.Random
class provides pseudorandom number generation.
import java.util.Random;
public class RandomNumbers {
public static void main(String[] args) {
Random rand = new Random();
// For example, rand.nextInt(100) returns a random int n,
// 0 <= n < 100.
System.out.print(rand.nextInt(100) + ",");
System.out.println(rand.nextInt(100));
// rand.nextDouble() returns a double f,
// 0.0 <= f < 1.0.
System.out.println(rand.nextDouble());
// This can be used to generate random doubles in
// other ranges, for example 5.0 <= f' < 10.0.
System.out.print((rand.nextDouble() * 5) + 5 + ",");
System.out.println((rand.nextDouble() * 5) + 5);
// If you want a known seed, create a new
// Random object with a specific seed.
Random r2 = new Random(42);
System.out.print(r2.nextInt(100) + ",");
System.out.println(r2.nextInt(100));
Random r3 = new Random(42);
System.out.print(r3.nextInt(100) + ",");
System.out.println(r3.nextInt(100));
}
}
Some of the generated numbers may be different when you run the sample.
$ javac RandomNumbers.java
$ java RandomNumbers
68,56
0.8090228139659177
5.840125017402497,6.937056298890035
94,49
94,49
See the java.util.Random class documentation for references on other random quantities that Java can provide.
Note that Java’s Random
class uses a different algorithm than Go’s math/rand/v2
package, so the exact numbers generated will be different. Also, Java doesn’t have a direct equivalent to Go’s PCG
source, but you can achieve similar functionality by creating multiple Random
objects with different seeds.
For more advanced random number generation, including thread-safe operations and additional distributions, you might want to look into the java.util.concurrent.ThreadLocalRandom
class or third-party libraries like Apache Commons Math.