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
| Parameter | Type | Default | Description |
|---|---|---|---|
n | Integer | 0 | When an integer is given, returns a random integer from 0 to n-1. When 0, returns a float between 0 and 1. |
range | Range | — | When 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!