builtins/srand_seeding.rb

tests/_examples/builtins/srand_seeding.rb in the metorex repository.

srand 10
puts srand(20)
puts srand(0)
puts srand(-17)

srand 10
first = rand
srand 10
puts (first == rand)

srand 99
sequence = 3.times.map { rand }
srand 99
puts (sequence == 3.times.map { rand })

srand 3.8
puts srand

class Seed
  def to_int
    7
  end
end
srand Seed.new
puts srand

previous = srand
puts previous.is_a?(Integer)
puts (srand != 0)

[nil, "7"].each do |bad|
  begin
    srand bad
  rescue TypeError => error
    puts error.class
  end
end

puts Kernel.private_instance_methods(false).include?(:srand)

Output:

10
20
0
true
true
3
7
true
true
TypeError
TypeError
true