Random Numbers in Karel

Here’s the translation of the random numbers example from Go to Java, formatted in Markdown suitable for Hugo:

Our 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, nextInt(100) returns a random int n,
        // 0 <= n < 100.
        System.out.print(rand.nextInt(100) + ",");
        System.out.println(rand.nextInt(100));

        // 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.

$ 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 (Permuted Congruential Generator), but the basic concept of seeded random number generation is similar.

For more advanced random number generation needs, Java also provides the SecureRandom class, which is designed for use in cryptographic applications.