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.