/**
* A standard random number generator
*
- * @author Roland Haeder <webmaster@ship-simu.org>
+ * @author Roland Haeder <webmaster@shipsimu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2013 Core Developer Team
* @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
+ * @link http://www.shipsimu.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*/
private $rndStrLen = 0;
+ /**
+ * Self instance
+ */
+ private static $selfInstance = NULL;
+
/**
* Protected constructor
*
* @return $rngInstance An instance of this random number generator
*/
public static final function createRandomNumberGenerator (FrameworkInterface $extraInstance = NULL) {
- // Get a new instance
- $rngInstance = new RandomNumberGenerator();
+ // Is self instance set?
+ if (is_null(self::$selfInstance)) {
+ // Get a new instance
+ $rngInstance = new RandomNumberGenerator();
- // Initialize the RNG now
- $rngInstance->initRng($extraInstance);
+ // Initialize the RNG now
+ $rngInstance->initRng($extraInstance);
+
+ // Set it "self"
+ self::$selfInstance = $rngInstance;
+ } else {
+ // Use from self instance
+ $rngInstance = self::$selfInstance;
+ }
// Return the instance
return $rngInstance;
$this->extraNumber = ($this->prime * $this->prime / pow(pi(), 2));
// Seed mt_rand()
- mt_srand((double) sqrt(microtime(true) * 100000000 * $this->extraNumber));
+ mt_srand((double) sqrt(microtime(TRUE) * 100000000 * $this->extraNumber));
// Set the server IP to cluster
$serverIp = 'cluster';