適当なランダムな数字が欲しいときがあります。で、適当に考えると自分の誕生日だったり、3で割り切れたり、ちっともランダムでないので、4つほど候補を挙げてくれるプログラム。せっかくだから素数にしました。
\> ruby random4.rb
とすると、
[53, 479, 4549, 6113]
というように、素数の配列を返してくれます。
#! /usr/bin/env ruby # random4.rb -- produces 4 random but prime numbers def primes_up_to(n) # calculate all the primes up to the number r = (2..n).to_a # convert to an array primes = while r.first**2 < n # up to square root primes.push(r.first) r.reject! { |i| i % primes.last == 0} # sieve end primes + r # the rest are primes end def random4(n) primes = primes_up_to(n) random4 = while random4.size < 4 random4[random4.size] = primes[rand(primes.size)] random4.uniq! end return random4.sort! end if $0 == __FILE__ p random4(10000) end # => [53, 479, 4549, 6113]