Zufallszahlen mit PHP

Eine kleine Beispiel-Klasse. Zu Testzwecken von mir geschrieben. Erzeugt Zufallszahlen und kann beliebig erweitert werden. Es handelt sich hierbei um ein weiteres Testprojekt, bei dem ich mich mit dem Thema „Zufallszahlen“ und „Klassen in PHP“ beschäftigen wollte. Möglicherweise zu Lernzwecken interessant.

Wichtig zu wissen ist hierbei, dass es sich – wie in allen Programmiersprachen – hierbei um keine wirklichen Zufallszahlen handelt. Wer sowas benötigt, sollte sich beispielsweise mal das Projekt „Random.org“ ansehen.

<?php
ini_set("display_errors", "on");

/*
  SimpleRandomizer Class by Holger Krause
  Version 0.1 @ 05.02.2017
*/

class SimpleRandomizer
{
  
  /*
   * define variables
   * [visibility] @var
  */
  
  private $usec;
  private $sec;
  private $mseed;
  private $random;
  
  protected $seed;
  protected $value1;
  protected $value2;
  protected $opt;

  /*
   * class constructor
   *
   * generate random seed:
   * @param [integer] $seed microseconds
   *
  */
  
  public function __construct ($seed)
  {
    list($usec, $sec) = explode(' ', microtime());
    $this->mseed = (float) $sec + ((float) $usec * $seed);
  }

  /*
   * generate random value
   *
   * @param [integer] $value1
   * @param [integer] $value2
   *
   * @return [integer] $random
   *
  */
  
  public function generate ($value1, $value2)
  {
    settype($value1, "integer");
    settype($value2, "integer");
    
    mt_srand($this->mseed);
    $this->random = mt_rand($value1, $value2);
  }
  
  /*
   * show random value
   *
   * @param 'plain' = just the value
   * @param 'html' = value with <h1>-Tags
   *
  */
  
  public function show ($opt)
  {
    if ($opt == "plain")
    {
      print $this->random;
    }
    elseif ($opt == "html")
    {
      print ("<h1>" . $this->random . "</h1>");
    }
    else
    {
      print ("Error: Option not defined or wrong!");
    }
    
  }
  

}

$rand = new SimpleRandomizer(100000);
$rand->generate(1,10);
$rand->show('html');

?>

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.