<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: random code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 26 Jul 2008 11:22:37 GMT</pubDate>
    <description>DZone Snippets: random code</description>
    <item>
      <title>String.random</title>
      <link>http://snippets.dzone.com/posts/show/5681</link>
      <description>&lt;code&gt;&lt;br /&gt;class String&lt;br /&gt;  def self.random(length=20)&lt;br /&gt;    chars = ('a'..'z').to_a + ('A'..'Z').to_a + ("0".."9").to_a&lt;br /&gt;    hash = ""; length.times { hash &lt;&lt; chars[rand(chars.size)] }; hash&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 23 Jun 2008 15:58:23 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5681</guid>
      <author>mcmire ()</author>
    </item>
    <item>
      <title>Random password generator in PHP</title>
      <link>http://snippets.dzone.com/posts/show/5583</link>
      <description>A little function which generates random password of a certain length. It uses all letters, both lowercase and uppercase and all numbers.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//generates a random password which contains all letters (both uppercase and lowercase) and all numbers&lt;br /&gt;function generatePassword($length) {&lt;br /&gt;$password='';&lt;br /&gt;for ($i=0;$i&lt;=$length;$i++) {&lt;br /&gt;	$chr='';&lt;br /&gt;	switch (mt_rand(1,3)) {&lt;br /&gt;		case 1:&lt;br /&gt;			$chr=chr(mt_rand(48,57));&lt;br /&gt;			break;&lt;br /&gt;		case 2:&lt;br /&gt;			$chr=chr(mt_rand(65,90));&lt;br /&gt;			break;&lt;br /&gt;		case 3:&lt;br /&gt;			$chr=chr(mt_rand(97,122));&lt;br /&gt;			&lt;br /&gt;	}&lt;br /&gt;	$password.=$chr;&lt;br /&gt;}	&lt;br /&gt;return $password;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 04 Jun 2008 14:08:36 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5583</guid>
      <author>fest (Reinis Veips)</author>
    </item>
    <item>
      <title>Bash title random Quote routine</title>
      <link>http://snippets.dzone.com/posts/show/5428</link>
      <description>#&lt;br /&gt;#this is a script in my .bash_profile that gets a random&lt;br /&gt;#quote .txt file and assigns it to the terminal title.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;quote_path="/Users/glynch/Documents/quotes/*"&lt;br /&gt;files=($quote_path)&lt;br /&gt;N=${#files[@]}&lt;br /&gt;((N=RANDOM%N))&lt;br /&gt;randomfile=${files[$N]}&lt;br /&gt;quote=""&lt;br /&gt;while read line; do quote="$quote $line"; done &lt; $randomfile&lt;br /&gt;echo -n -e "\033]0;$quote\007"</description>
      <pubDate>Thu, 24 Apr 2008 19:43:08 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5428</guid>
      <author>robotsu (Robot)</author>
    </item>
    <item>
      <title>ruby: random alphanumeric string</title>
      <link>http://snippets.dzone.com/posts/show/5017</link>
      <description>generate random alphanumeric string 'size' characters long&lt;br /&gt;&lt;br /&gt;&lt;code&gt;size = 8; (1..size).map{([*('a'..'z')]+[*('A'..'Z')]+[*(1..9)].map{|n|n.to_s}).instance_eval{self[rand(self.size)]}}.join&lt;/code&gt;</description>
      <pubDate>Mon, 21 Jan 2008 09:03:01 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5017</guid>
      <author>elliottcable (elliott cable)</author>
    </item>
    <item>
      <title>Random numbers in Ruby</title>
      <link>http://snippets.dzone.com/posts/show/4697</link>
      <description>&lt;code&gt;&lt;br /&gt;&lt;br /&gt;# Pseudo random number generator&lt;br /&gt;# From: http://gnuvince.wordpress.com/2005/11/24/pseudo-random-number-generator&lt;br /&gt;# Author: Vincent Foley-Bourgon&lt;br /&gt;&lt;br /&gt;def random_number&lt;br /&gt;  t = Time.now.to_f / (Time.now.to_f % Time.now.to_i)&lt;br /&gt;  random_seed = t * 1103515245 + 12345;&lt;br /&gt;  (random_seed / 65536) % 32768;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;10.times { puts random_number }&lt;br /&gt;&lt;br /&gt;cnt = Array.new(10,0)&lt;br /&gt;20000.times { cnt[(random_number % 10).to_i] += 1 }&lt;br /&gt;p cnt&lt;br /&gt;puts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Ruby Gaussian Random Number Generator&lt;br /&gt;# Author: Glenn&lt;br /&gt;# http://webhost101.net/rails/typo/articles/2007/07/31/ruby-gaussian-random-number-generator&lt;br /&gt;&lt;br /&gt;def gaussian_rand &lt;br /&gt;   u1 = u2 = w = g1 = g2 = 0  # declare&lt;br /&gt;   begin&lt;br /&gt;     u1 = 2 * rand - 1&lt;br /&gt;     u2 = 2 * rand - 1&lt;br /&gt;     w = u1 * u1 + u2 * u2&lt;br /&gt;   end while w &gt;= 1&lt;br /&gt;   &lt;br /&gt;   w = Math::sqrt( ( -2 * Math::log(w)) / w )&lt;br /&gt;   g2 = u1 * w;&lt;br /&gt;   g1 = u2 * w;&lt;br /&gt;   # g1 is returned  &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;sum = 0&lt;br /&gt;sumsq = 0&lt;br /&gt;n = 1000&lt;br /&gt;0.upto(n) do &lt;br /&gt;  #r = gaussian_rand&lt;br /&gt;  r = gaussian_rand * 100 + 50   # new_random_number = gaussian_rand * standard_deviation + average&lt;br /&gt;  #puts r&lt;br /&gt;  sum += r&lt;br /&gt;  sumsq += (r*r)&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;ave = sum/n&lt;br /&gt;stddev = Math::sqrt(sumsq/n - ave * ave)&lt;br /&gt;puts "Average = #{ave}"&lt;br /&gt;puts "StdDev = #{stddev}"&lt;br /&gt;puts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Random Number Generator&lt;br /&gt;# http://scutigena.sourceforge.net/test-random.html&lt;br /&gt;# http://scutigena.sourceforge.net/sources/ruby-1.7.2/random.html&lt;br /&gt;# $Id: random.ruby,v 1.2 2003/12/30 01:25:05 davidw Exp $&lt;br /&gt;&lt;br /&gt;IM = 139968&lt;br /&gt;IA = 3877&lt;br /&gt;IC = 29573&lt;br /&gt;&lt;br /&gt;$last = 42.0&lt;br /&gt;def gen_random (max) (max * ($last = ($last * IA + IC) % IM)) / IM end&lt;br /&gt;&lt;br /&gt;10.times do&lt;br /&gt;    puts gen_random(100000.0)&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;printf "%.5f\n", gen_random(100.0)&lt;br /&gt;puts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# From: http://matt.blogs.it/entries/00002641.html&lt;br /&gt;# Author: Matt Mower&lt;br /&gt;# cf. http://www.taygeta.com/random/gaussian.html&lt;br /&gt;# cf. http://www.bearcave.com/misl/misl_tech/wavelets/hurst/random.html&lt;br /&gt;&lt;br /&gt;def box_mueller( mean = 0.0, stddev = 1.0 )&lt;br /&gt;  x1 = 0.0, x2 = 0.0, w = 0.0&lt;br /&gt;&lt;br /&gt;  until w &gt; 0.0 &amp;&amp; w &lt; 1.0&lt;br /&gt;    x1 = 2.0 * rand - 1.0&lt;br /&gt;    x2 = 2.0 * rand - 1.0&lt;br /&gt;    w = ( x1 * x2 ) + ( x2 * x2 )&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  w = Math.sqrt( -2.0 * Math.log( w ) / w )&lt;br /&gt;  r = x1 * w&lt;br /&gt;&lt;br /&gt;  mean + r * stddev&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;10.times { puts box_mueller(5.0, 1.0) }&lt;br /&gt;puts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Generating random numbers with a specified distribution&lt;br /&gt;# From: http://www.cs.nyu.edu/~michaels/blog/?p=24&lt;br /&gt;# Author: Michael Schidlowsky&lt;br /&gt;&lt;br /&gt;def gen&lt;br /&gt;  (x=rand)&gt;0.5 ? x : (x &lt; rand/2.0) ? 1.0 - x : x&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def gen2&lt;br /&gt;   (x = rand) &amp;&amp; rand ? 1.0 - x : x&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def compute_distribution(numSamples, &amp;block)&lt;br /&gt;   samples = []&lt;br /&gt;   values = 10&lt;br /&gt;   numSamples.times{samples &lt;&lt; yield}&lt;br /&gt;   dist = Array.new(values, 0)&lt;br /&gt;   samples.each{ |s| dist[(s*values).floor] += 1 }&lt;br /&gt;   dist&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;p compute_distribution(1000){rand}&lt;br /&gt;p compute_distribution(1000){gen}&lt;br /&gt;p compute_distribution(1000) { gen2 }&lt;br /&gt;puts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Random number generation for a triangular distribution&lt;br /&gt;# From: http://www.brighton-webs.co.uk/distributions/triangular.asp&lt;br /&gt;# cf. http://en.wikipedia.org/wiki/Triangular_distribution&lt;br /&gt;&lt;br /&gt;def rng(m, low, high)&lt;br /&gt;&lt;br /&gt;   # cf. the parameter info at http://www.brighton-webs.co.uk/distributions/triangular.asp&lt;br /&gt;   return nil unless high &gt; low &amp;&amp; m &gt; low &amp;&amp; m &lt; high    &lt;br /&gt;&lt;br /&gt;   u = rand&lt;br /&gt;&lt;br /&gt;   if u &lt;= (m-low)/(high-low)&lt;br /&gt;      r = low+ Math.sqrt(u*(high-low)*(m-low))&lt;br /&gt;   else&lt;br /&gt;      r = high - Math.sqrt((1.0-u)*(high-low)*(high-m))&lt;br /&gt;   end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;10.times do&lt;br /&gt;  #puts rng(0.0, -25.0, 25.0)&lt;br /&gt;  puts rng(50.0, 25.0, 75.0)&lt;br /&gt;end&lt;br /&gt;puts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# From: http://www.ruby-forum.com/topic/95931&lt;br /&gt;# Author: Christoffer Lern&#246;&lt;br /&gt;&lt;br /&gt;class Range&lt;br /&gt;  def rand&lt;br /&gt;    return first if exclude_end? &amp;&amp; last == first&lt;br /&gt;    Kernel::rand(last - first + (exclude_end? ? 0 : 1)) + first&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;r1 = -9..9&lt;br /&gt;r2 = -90...100&lt;br /&gt;p r1.rand, r2.rand&lt;br /&gt;&lt;br /&gt;r3 = 0..9&lt;br /&gt;&lt;br /&gt;num = []&lt;br /&gt;10.times do&lt;br /&gt;   num &lt;&lt; r3.rand&lt;br /&gt;   if num.first.zero? then num.shift; redo end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;p num&lt;br /&gt;puts num.to_s.to_i&lt;br /&gt;puts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# See:&lt;br /&gt;# http://redcorundum.blogspot.com/2008/01/randomizing-array-revisited.html&lt;br /&gt;# http://redcorundum.blogspot.com/2006/12/randomizing-array-and-other-faqs.html&lt;br /&gt;# http://szeryf.wordpress.com/2007/06/19/a-simple-shuffle-that-proved-not-so-simple-after-all/&lt;br /&gt;&lt;br /&gt;class Array&lt;br /&gt;  def shuffle&lt;br /&gt;    array = dup&lt;br /&gt;    size.downto 2 do |j|&lt;br /&gt;      r = rand j&lt;br /&gt;      array[j-1], array[r] = array[r], array[j-1]&lt;br /&gt;    end&lt;br /&gt;    array&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;array = (1..50).to_a&lt;br /&gt;&lt;br /&gt;10.times { p array.shuffle.first(10) }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#-------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class RNG&lt;br /&gt;&lt;br /&gt;   def num(min=8,max=min+5,iter=1)&lt;br /&gt;&lt;br /&gt;      return nil unless min.is_a?(Integer) &amp;&amp; max.is_a?(Integer) &amp;&amp; max &gt; min &amp;&amp; iter.is_a?(Integer)&lt;br /&gt;&lt;br /&gt;      ret = []&lt;br /&gt;      stats = Hash.new(0)     # optional; cf. stats[random_num] += 1&lt;br /&gt;      digits = Array(0..9).sort_by {rand}&lt;br /&gt;      #digits = (Array(0..9) * (rand(4)+1)).sort_by {rand}&lt;br /&gt;      digits_size = digits.size&lt;br /&gt;&lt;br /&gt;      iter.times do&lt;br /&gt;         count = 0&lt;br /&gt;         len = min + rand(max-min+1)&lt;br /&gt;         ar = []&lt;br /&gt;         while count &lt; len&lt;br /&gt;            i = rand(digits_size)    # get a random array index&lt;br /&gt;            random_num = digits.at(i)&lt;br /&gt;            stats[random_num] += 1&lt;br /&gt;            ar &lt;&lt; random_num&lt;br /&gt;            digits = digits.sort_by {rand}&lt;br /&gt;            count += 1&lt;br /&gt;            if count == 1 &amp;&amp; ar.first.zero? then ar.shift; stats[0] -= 1; count = 0 end&lt;br /&gt;         end&lt;br /&gt;         ret &lt;&lt; ar.to_s.to_i&lt;br /&gt;      end  # iter&lt;br /&gt;      #ret&lt;br /&gt;      ret &lt;&lt; stats   # optional&lt;br /&gt;   end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;puts&lt;br /&gt;&lt;br /&gt;min = 8&lt;br /&gt;max = 13&lt;br /&gt;iter = 10000&lt;br /&gt;result =  RNG.new.num(min, max, iter)&lt;br /&gt;stats = result.pop&lt;br /&gt;&lt;br /&gt;t = 0&lt;br /&gt;stats.each_value { |v| t += v }  # get the overall frequency&lt;br /&gt;&lt;br /&gt;n = 0&lt;br /&gt;t = t * 1.0&lt;br /&gt;m = t / 10.0 &lt;br /&gt;&lt;br /&gt;stats.sort.each do |k,v| &lt;br /&gt;   i = (v / t) * 100.0&lt;br /&gt;   x = v &gt; m ? v - m : m - v&lt;br /&gt;   y = (x / m) * 100.0&lt;br /&gt;   n += i&lt;br /&gt;   puts "#{k}  ::  #{"%.2f" % m}  ::  #{v}  ::  #{"%.2f" % i} %  ::  #{ "%.2f" % ((m-v) * -1) }  ::  #{"%.2f" % y} %"&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;puts n, m, t&lt;br /&gt;&lt;br /&gt;puts&lt;br /&gt;puts RNG.new.num(20, 25, 10)[0..-2]&lt;br /&gt;&lt;br /&gt;puts&lt;br /&gt;rn = RNG.new.num(80, 100)&lt;br /&gt;puts rn[0..-2]&lt;br /&gt;p rn.last&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Wed, 24 Oct 2007 19:01:38 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4697</guid>
      <author>ntk ()</author>
    </item>
    <item>
      <title>PHP : Filas al azar / Random Rows</title>
      <link>http://snippets.dzone.com/posts/show/4672</link>
      <description>Filas al azar / Random Rows&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function dame_unas_filas_al_azar($tabla,$numero_de_filas)&lt;br /&gt;{&lt;br /&gt;$sql="SELECT * FROM ".$tabla." ORDER BY RAND(NOW()) LIMIT ".$numero_de_filas;&lt;br /&gt;$resultado = mysql_query($sql);&lt;br /&gt;	if($resultado)&lt;br /&gt;	{&lt;br /&gt;	return mysql_fetch_array($resultado);&lt;br /&gt;	}&lt;br /&gt;	else&lt;br /&gt;	{&lt;br /&gt;	return false;&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 19 Oct 2007 08:27:46 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4672</guid>
      <author>Ricardo (Ricardo m. Garc&#237;a)</author>
    </item>
    <item>
      <title>Lottery</title>
      <link>http://snippets.dzone.com/posts/show/4668</link>
      <description>&lt;br /&gt;Author:   ntk&lt;br /&gt;License:   &lt;a href="http://www.opensource.org/licenses/mit-license.php"&gt;The MIT License&lt;/a&gt;, Copyright (c) 2007 ntk&lt;br /&gt;Inspired by:   &lt;a href="http://www.random.org/quick-pick/"&gt;Lottery Quick Pick&lt;/a&gt; &lt;br /&gt;Hints:   &lt;a href="http://en.wikipedia.org/wiki/Lottery_mathematics"&gt;Lottery mathematics&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;class Lottery&lt;br /&gt;&lt;br /&gt;   def playing(i=1, n1=0, r1=0..0, n2=0, r2=0..0)&lt;br /&gt;&lt;br /&gt;      return nil unless i.is_a?(Integer) &amp;&amp; n1.is_a?(Integer) &amp;&amp; n1 &gt; 0 &amp;&amp; r1.is_a?(Range) &amp;&amp; n2.is_a?(Integer) &amp;&amp; r2.is_a?(Range)&lt;br /&gt;      stats = Hash.new(0)   # optional; stores the frequency of picked numbers, cf. stats[random_num] += 1&lt;br /&gt;      ret = []&lt;br /&gt;&lt;br /&gt;      random_procs = [ &lt;br /&gt;         lambda { |a,n| a.slice!(rand(n)) },      # a is an array, n an integer&lt;br /&gt;         lambda { |a,n| a.slice!(rand(n) * -1) }, &lt;br /&gt;         lambda { |a,n| a.slice!((rand(n) * -1) + rand(n)) },&lt;br /&gt;         lambda { |a,n| a.slice!((rand(n) - rand(n))) }, &lt;br /&gt;         lambda { |a,n| a.reverse!.slice!(rand(n)) },&lt;br /&gt;         lambda { |a,n| a.reverse!.slice!(rand(n) * -1) }, &lt;br /&gt;         lambda { |a,n| a.reverse!.slice!((rand(n) * -1) + rand(n)) },&lt;br /&gt;         lambda { |a,n| a.reverse!.slice!((rand(n) - rand(n))) } &lt;br /&gt;      ] &lt;br /&gt;&lt;br /&gt;      i.times do&lt;br /&gt;         numbers = r1.to_a.sort_by {rand}&lt;br /&gt;         num = numbers.size&lt;br /&gt;         ar = []&lt;br /&gt;         count = 0&lt;br /&gt;&lt;br /&gt;         while count &lt; n1 + n2&lt;br /&gt;&lt;br /&gt;            count += 1&lt;br /&gt;&lt;br /&gt;            if count &gt; n1 &amp;&amp; n2 &gt; 0&lt;br /&gt;               numbers2 = r2.to_a&lt;br /&gt;               numbers2 = (numbers &amp; numbers2).sort_by {rand} &lt;br /&gt;               num2 = numbers2.size&lt;br /&gt;               count2 = 0&lt;br /&gt;               while count2 &lt; n2&lt;br /&gt;                  count2 += 1&lt;br /&gt;                  i = rand(random_procs.size)   # get a random array index for random_procs array&lt;br /&gt;                  random_procs = random_procs.sort_by {rand}      &lt;br /&gt;                  random_num = random_procs.at(i).call(numbers2, num2)&lt;br /&gt;                  stats[random_num] += 1&lt;br /&gt;                  ar &lt;&lt; random_num&lt;br /&gt;                  numbers2 = numbers2.sort_by {rand}&lt;br /&gt;                  num2 -= 1&lt;br /&gt;               end   # while&lt;br /&gt;&lt;br /&gt;               if count2 &gt; 1 then count += (count2-1) end  &lt;br /&gt;               #break   # alternative&lt;br /&gt;              &lt;br /&gt;            else&lt;br /&gt;&lt;br /&gt;               i = rand(random_procs.size)                               &lt;br /&gt;               random_procs = random_procs.sort_by {rand}  &lt;br /&gt;  &lt;br /&gt;               random_num = random_procs.at(i).call(numbers, num)&lt;br /&gt;               stats[random_num] += 1&lt;br /&gt;               ar &lt;&lt; random_num&lt;br /&gt;&lt;br /&gt;=begin&lt;br /&gt;              if rand(num) % (rand(num) + 1) == rand(num)               #  alternative&lt;br /&gt;                  random_num = random_procs.at(i).call(numbers, num)&lt;br /&gt;                  stats[random_num] += 1&lt;br /&gt;                  ar &lt;&lt; random_num&lt;br /&gt;               else&lt;br /&gt;                  random_num = numbers.slice!(rand(num))&lt;br /&gt;                  stats[random_num] += 1&lt;br /&gt;                  ar &lt;&lt; random_num&lt;br /&gt;               end&lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;               numbers = numbers.sort_by {rand}&lt;br /&gt;               num -= 1&lt;br /&gt;&lt;br /&gt;            end          # if&lt;br /&gt;         end             # while&lt;br /&gt;         ret &lt;&lt; ar&lt;br /&gt;      end&lt;br /&gt;      #ret&lt;br /&gt;      ret &lt;&lt; stats   # optional&lt;br /&gt;   end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;puts&lt;br /&gt;puts "UK National Lottery, German Lotto 6/49, ..."&lt;br /&gt;&lt;br /&gt;ndraws = 10&lt;br /&gt;result = Lottery.new.playing(ndraws, 6, 1..49)&lt;br /&gt;stats = result.pop&lt;br /&gt;&lt;br /&gt;result.each do |t| &lt;br /&gt;   puts t.sort.join('-')&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;puts&lt;br /&gt;n = 0&lt;br /&gt;stats.sort.each do |k,v| &lt;br /&gt;   i = (v / (ndraws * 6.0) ) * 100.0&lt;br /&gt;   n += i&lt;br /&gt;   puts "#{k} :: #{v} :: #{i}%"&lt;br /&gt;end&lt;br /&gt;p n&lt;br /&gt;&lt;br /&gt;puts&lt;br /&gt;puts "US Powerball Lottery"&lt;br /&gt;Lottery.new.playing(ndraws, 5, 1..55, 1, 1..42)[0..-2].each do |t| &lt;br /&gt;   n = t.pop&lt;br /&gt;   puts "#{t.sort.join('-')}  and  #{n}"&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;puts&lt;br /&gt;puts "Mega Millions"&lt;br /&gt;Lottery.new.playing(ndraws, 5, 1..56, 1, 1..46)[0..-2].each do |t| &lt;br /&gt;   n = t.pop&lt;br /&gt;   puts "#{t.sort.join('-')}  and  #{n}"&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;puts&lt;br /&gt;puts "EuroMillions"&lt;br /&gt;Lottery.new.playing(ndraws, 5, 1..50, 2, 1..9)[0..-2].each do |t| &lt;br /&gt;   n1 = t.pop&lt;br /&gt;   n2 = t.pop&lt;br /&gt;   puts "#{t.sort.join('-')}  and  #{n1}-#{n2}"&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;puts&lt;br /&gt;puts "US Powerball Lottery"&lt;br /&gt;&lt;br /&gt;ndraws = 10&lt;br /&gt;nums = [5, 23, 25, 33, 34]&lt;br /&gt;pb = 31&lt;br /&gt;&lt;br /&gt;matches = []&lt;br /&gt;n = 0&lt;br /&gt;&lt;br /&gt;Lottery.new.playing(ndraws, 5, 1..55, 1, 1..42)[0..-2].each do |t| &lt;br /&gt;   i = t.pop&lt;br /&gt;   t = t.sort&lt;br /&gt;   if (t &amp; nums).size &gt; matches.size || ( matches.size == 0 &amp;&amp; i == pb )&lt;br /&gt;      matches = t &amp; nums &lt;br /&gt;      i == pb ? n = i : n = 0&lt;br /&gt;   end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if pb == n &amp;&amp; !matches.empty?&lt;br /&gt;   puts "Your numbers: #{nums.join('-')} and #{pb}\nYour matches: #{matches.join('-')} and #{n}"&lt;br /&gt;elsif pb == n &amp;&amp; matches.empty?&lt;br /&gt;   puts "Your numbers: #{nums.join('-')} and #{pb}\nYour matches: [] and #{n}"&lt;br /&gt;else&lt;br /&gt;   puts "Your numbers: #{nums.join('-')} and #{pb}\nYour matches: #{matches.join('-')}"&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Thu, 18 Oct 2007 12:30:09 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4668</guid>
      <author>ntk ()</author>
    </item>
    <item>
      <title>Random Characters with Ruby</title>
      <link>http://snippets.dzone.com/posts/show/4667</link>
      <description>Use for a password or salt or whatever...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;(0..25).inject('') { |r, i| r &lt;&lt; rand(93) + 33 }&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 18 Oct 2007 03:24:39 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4667</guid>
      <author>timmorgan (Tim Morgan)</author>
    </item>
    <item>
      <title>randomizing an array in ruby (the right way)</title>
      <link>http://snippets.dzone.com/posts/show/4659</link>
      <description>Snagged from http://www.rubyquiz.com/quiz113.html&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# be sure to use sort_by rather than sort&lt;br /&gt;quiz = (1..10).to_a&lt;br /&gt;quiz.sort_by { rand }&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 15 Oct 2007 18:09:53 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4659</guid>
      <author>sikelianos (Zeke Sikelianos)</author>
    </item>
    <item>
      <title>Api key (or any kind of key) generator</title>
      <link>http://snippets.dzone.com/posts/show/4657</link>
      <description>Generates a random key for API neatness.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class KeyGenerator&lt;br /&gt;  require "digest/sha1"&lt;br /&gt;  def self.generate(length = 10)&lt;br /&gt;    Digest::SHA1.hexdigest(Time.now.to_s + rand(12341234).to_s)[1..length]&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 15 Oct 2007 13:03:21 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4657</guid>
      <author>leethal (August Lilleaas)</author>
    </item>
  </channel>
</rss>
