Kernel#rand

rand(n=0) -> number
Returns: Integer or Float · Updated March 13, 2026 · Kernel Methods
random numbers kernel

rand is a Kernel method that generates random numbers. Ruby provides several ways to generate random values depending on your needs.

Syntax

rand()        # float: 0.0 <= value < 1.0
rand(n)       # integer: 0 <= value < n
rand(range)   # value within the range

Parameters

ParameterTypeDefaultDescription
nInteger0When an integer is given, returns a random integer from 0 to n-1. When 0, returns a float between 0 and 1.
rangeRangeWhen a range is given, returns a random value within that range (integers or floats).

Examples

Basic float generation

# Generate a random float between 0 and 1
rand()
# => 0.7234567890123456

rand()
# => 0.1234567890123456

Generating random integers

# Random integer from 0 to 9
rand(10)
# => 7

rand(10)
# => 3

# Random integer from 1 to 10
rand(1..10)
# => 5

Using ranges with rand

# Float range
rand(0.0...1.0)
# => 0.4567890123456789

# Integer range
rand(1..100)
# => 42

# Negative range works too
rand(-10..-1)
# => -7

Common Patterns

Random selection from an array

colors = ["red", "green", "blue", "yellow"]
colors[rand(colors.length)]
# => "blue"

# Or use Array#sample (recommended)
colors.sample
# => "green"

Secure random numbers

For cryptographic purposes, use SecureRandom instead:

require 'securerandom'

SecureRandom.random_number(100)    # => 87
SecureRandom.hex(16)                # => "a1b2c3d4e5f6..."
SecureRandom.alphanumeric(10)      # => "Ab3xYz9kP"

Seeding for reproducibility

Set the seed for deterministic random sequences:

srand(12345)
[rand(100), rand(100), rand(100)]
# => [42, 47, 89]

srand(12345)
[rand(100), rand(100), rand(100)]
# => [42, 47, 89]  Same results!

See Also