g3x0

6/49 random tickets generator for analytics purposes

Jun 12th, 2013
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.98 KB | None | 0 0
  1. <?php
  2.  
  3.     function generate_new_numbers()
  4.     {
  5.         $numbers = array();
  6.  
  7.         // Generate 6 numbers
  8.         for ($i = 0; $i < 6; $i++)
  9.         {
  10.             // Check for duplicates first
  11.             $check = false;
  12.             while (!$check)
  13.             {
  14.                 $temp = mt_rand(1, 49);
  15.                 if (!in_array($temp, $numbers))
  16.                 {
  17.                     // Then add the number in the array
  18.                     $numbers[] = $temp;
  19.                     $check = true;
  20.                 }
  21.             }
  22.         }    
  23.                
  24.         return $numbers;
  25.     }
  26.  
  27.     // Return how many numbers from
  28.     // array $a1 exist in array $a2
  29.     function check_numbers($a1, $a2)
  30.     {
  31.         $i = 0;
  32.         foreach ($a1 as $val)
  33.             if (in_array($val, $a2))
  34.                 $i += 1;
  35.  
  36.         return $i;
  37.     }
  38.  
  39.     // Return how many tickets have $x winning numbers
  40.     function winning_tickets_nr($arr, $x)
  41.     {
  42.         $i = 0;
  43.         foreach ($arr as $key => $value)
  44.             if ($value == $x)
  45.                 $i += 1;
  46.  
  47.         return $i;
  48.     }
  49.  
  50.     // Add spaces after each 3 digits to make
  51.     // the given number easily readable
  52.     function format_big_nr($bigint)
  53.     {
  54.         $temp = '';
  55.         $bigint = intval($bigint);
  56.  
  57.         while ($bigint > 999)
  58.         {
  59.             $nrtostr = strval($bigint);
  60.             $temp .= ' ' . substr($nrtostr, strlen($nrtostr)-3, 4);
  61.             $bigint = intval($bigint / 1000);
  62.         }
  63.  
  64.         $bigint = $bigint . $temp;
  65.  
  66.         return $bigint;
  67.     }
  68.  
  69.     // Generate a random winning ticket
  70.     $winning_ticket = generate_new_numbers();
  71.  
  72.     // How many tickets to generate
  73.     $tickets_to_gen = isset($_GET['nr']) ? intval($_GET['nr']) : 1;
  74.  
  75.     // The generated tickets
  76.     $tickets_gened = array();
  77.  
  78.     // Generate the random tickets
  79.     // based on $tickets_to_gen
  80.     for ($i = 0; $i < $tickets_to_gen; $i++)
  81.     {
  82.         $new_nrs = generate_new_numbers();
  83.         $tickets_gened[implode(', ', $new_nrs)] = check_numbers($new_nrs, $winning_ticket);
  84.     }
  85.  
  86.     // Show the results
  87.     echo 'Numar de bilete generate: '. format_big_nr($tickets_to_gen) .'<br />';
  88.     echo 'Numar de bilete cu 3 nr. castigatoare: '. winning_tickets_nr($tickets_gened, 3) .'<br />';
  89.     echo 'Numar de bilete cu 4 nr. castigatoare: '. winning_tickets_nr($tickets_gened, 4) .'<br />';
  90.     echo 'Numar de bilete cu 5 nr. castigatoare: '. winning_tickets_nr($tickets_gened, 5) .'<br />';
  91.     echo 'Numar de bilete cu 6 nr. castigatoare: '. winning_tickets_nr($tickets_gened, 6) .'<br />';
  92.  
  93.     echo '<br />Numerele extrase: '. implode(', ', $winning_ticket) .'<br />';
  94.  
  95.     // Show the winning tickets with 6 numbers
  96.     // if there are any
  97.     if (winning_tickets_nr($tickets_gened, 6) > 0)
  98.     {
  99.         echo 'Biletele cu 6 nr. castigatoare:';
  100.         foreach ($tickets_gened as $key => $value)
  101.             if ($value == 6)
  102.                 echo " $key ;";
  103.     }
  104.  
  105. ?>
Advertisement
Add Comment
Please, Sign In to add comment