Title here
Summary here
Crystal’s Random
module provides pseudorandom number generation.
require "random"
# For example, `Random.new.rand(100)` returns a random `Int32` n,
# `0 <= n < 100`.
print Random.new.rand(100), ","
print Random.new.rand(100)
puts
# `Random.new.rand` returns a `Float64` f,
# `0.0 <= f < 1.0`.
puts Random.new.rand
# This can be used to generate random floats in
# other ranges, for example `5.0 <= f' < 10.0`.
print (Random.new.rand * 5) + 5, ","
print (Random.new.rand * 5) + 5
puts
# If you want a known seed, create a new
# `Random` instance with a seed.
r2 = Random.new(42)
print r2.rand(100), ","
print r2.rand(100)
puts
# Using the same seed will produce the same sequence
# of random numbers.
r3 = Random.new(42)
print r3.rand(100), ","
print r3.rand(100)
puts
Some of the generated numbers may be different when you run the sample.
$ crystal random_numbers.cr
37,93
0.5026172570766397
5.021822584235394,9.805990003782578
71,2
71,2
See the Random module docs for references on other random quantities that Crystal can provide.
Crystal’s Random
module is similar to Go’s math/rand/v2
package, but with some differences:
Random.new
to create a new random number generator, while Go uses rand.New
.Random.new.rand(100)
to get a random integer between 0 and 99, while in Go you would use rand.IntN(100)
.Random.new.rand
returns a Float64
between 0 and 1, similar to Go’s rand.Float64()
.NewPCG
, but you can create a seeded random number generator using Random.new(seed)
.The overall functionality is similar, allowing you to generate random integers, floats, and create seeded random number generators for reproducible sequences.