Ruby Random Number Generator: rand, srandGenerate random numbers with rand. Use srand to seed a random stream.
Rand, random numbers.The weather is not random. It can be forecast based on patterns. But it can be unpredictable. A random number generator like rand could generate temperatures.
With rand,we often provide a range of numbers. And with this range, we can look up a value from an array—like a letter or an array element.
Range example.Here we use rand with a range. The range is inclusive—the lowest or highest bounding numbers may be returned by rand. By default, a range of 0 to 1 is used.
Here: We generate a random number between 0 and 1. Then we generate six more, all between 0 and 5 (inclusively).
Srand: The srand method is also available: this seeds the random number generator. Srand is not normally needed.
Note: Calling srand with a constant number will make a program always use the same random numbers.
|Ruby program that uses random numbers # Display random number between 0 and 1. puts rand # Display 6 random numbers between 0 and 5 inclusive. for i in 0..5 # Call with range. r = rand 0..5 puts r end Output 0.3299959902490742 2 4 2 0 1 5|
Srand.This seeds the random number generator. Typically it is best not to invoke this method. It may make the random number stream more deterministic.
Note: If you use a constant with srand, the random stream of numbers is not random anymore. This does not seem random.
Instead: Each time I run this program, it returns 0.41 and 0.72. This is because the random number generator was seeded with a constant 1.
|Ruby program that uses srand # Use constant seed. srand 1 # Display random numbers. puts rand puts rand Output 0.417022004702574 0.7203244934421581|
Lowercase letters.There are 26 lowercase ASCII letters in the English alphabet. With rand we can generate random lowercase letters with an index from 0 to 25 (inclusive).
Note: The "letters" string has 26 chars. Index 0 is "a" and index 25 is "z." Other values could be added.
|Ruby program that generates random lowercase letters def random_lowercase() # Lookup table of lowercase letters. letters = "abcdefghijklmnopqrstuvwxyz" # Get random index within range. # ... Return letter at that position. r = rand 0..25 return letters[r] end # Invoke our random_lowercase method. 10.times do puts random_lowercase() end Output l a q i v s i b d q|
Random strings.This method builds on our "random lowercase letter" method. We generate a string of a certain length. We place a random letter "length" times.
Array: We start with an empty array (we call this array the "word" array). We add letters to this array.
Times: We use the times iterator to add the required number of letters to our word array. We access letters using a range-based rand call.
|Ruby program that generates random strings def random_string(length) # All lowercase letters. letters = "abcdefghijklmnopqrstuvwxyz" # Empty Array for letters we add. word = Array # Add all random letters. length.times do # Get random index within string. r = rand 0..25 # Get letter for index. letter = letters[r] # Push to our array. word.push(letter) end # Return random string joined together. result = word.join("") end # Call our random_string method many times. 3.upto(10) do |i| puts random_string(i) puts random_string(i) end Output oko pig heav yafh yvcuu wgbep uaosje uywvyc pttwiau wqcxpyq zzudlihd kckqhqfd tffatuubx oulqkdfyw civpxnsdjb yrvvqbdwsv|
Randomized review.It may be that the core of our universe is random. With Ruby, though, we get a powerful and easy-to-use pseudo-random number generator.
Dot Net Perls
|© 2007-2019 Sam Allen. All rights reserved. Written by Sam Allen, firstname.lastname@example.org.|