GenisysPro  for Minecraft PE/Windows 10 v1.1.x
Feature-rich server software for Minecraft PE and Windows 10 Edition
Random Class Reference

Public Member Functions

 __construct ($seed=-1)
 
 setSeed ($seed)
 
 getSeed ()
 
 nextInt ()
 
 nextSignedInt ()
 
 nextFloat ()
 
 nextSignedFloat ()
 
 nextBoolean ()
 
 nextRange ($start=0, $end=0x7fffffff)
 
 nextBoundedInt ($bound)
 

Data Fields

const X = 123456789
 
const Y = 362436069
 
const Z = 521288629
 
const W = 88675123
 

Protected Attributes

 $seed
 

Detailed Description

XorShift128Engine Random Number Noise, used for fast seeded values Most of the code in this class was adapted from the XorShift128Engine in the php-random library.

Constructor & Destructor Documentation

◆ __construct()

__construct (   $seed = -1)
Parameters
int$seedInteger to be used as seed.
59  {
60  if($seed === -1){
61  $seed = time();
62  }
63 
64  $this->setSeed($seed);
65  }

Member Function Documentation

◆ getSeed()

getSeed ( )
78  {
79  return $this->seed;
80  }

◆ nextBoolean()

nextBoolean ( )

Returns a random boolean

Returns
bool
131  {
132  return ($this->nextSignedInt() & 0x01) === 0;
133  }

◆ nextBoundedInt()

nextBoundedInt (   $bound)
Parameters
$bound
Returns
int
152  {
153  return $this->nextInt() % $bound;
154  }

◆ nextFloat()

nextFloat ( )

Returns a float between 0.0 and 1.0 (inclusive)

Returns
float
113  {
114  return $this->nextInt() / 0x7fffffff;
115  }

◆ nextInt()

nextInt ( )

Returns an 31-bit integer (not signed)

Returns
int
87  {
88  return $this->nextSignedInt() & 0x7fffffff;
89  }

◆ nextRange()

nextRange (   $start = 0,
  $end = 0x7fffffff 
)

Returns a random integer between $start and $end

Parameters
int$startdefault 0
int$enddefault 0x7fffffff
Returns
int
143  {
144  return $start + ($this->nextInt() % ($end + 1 - $start));
145  }

◆ nextSignedFloat()

nextSignedFloat ( )

Returns a float between -1.0 and 1.0 (inclusive)

Returns
float
122  {
123  return $this->nextSignedInt() / 0x7fffffff;
124  }

◆ nextSignedInt()

nextSignedInt ( )

Returns a 32-bit integer (signed)

Returns
int
96  {
97  $t = ($this->x ^ ($this->x << 11)) & 0xffffffff;
98 
99  $this->x = $this->y;
100  $this->y = $this->z;
101  $this->z = $this->w;
102  $this->w = ($this->w ^ (($this->w >> 19) & 0x7fffffff)
103  ^ ($t ^ (($t >> 8) & 0x7fffffff))) & 0xffffffff;
104 
105  return $this->w;
106  }

◆ setSeed()

setSeed (   $seed)
Parameters
int$seedInteger to be used as seed.
70  {
71  $this->seed = $seed;
72  $this->x = self::X ^ $seed;
73  $this->y = self::Y ^ ($seed << 17) | (($seed >> 15) & 0x7fffffff) & 0xffffffff;
74  $this->z = self::Z ^ ($seed << 31) | (($seed >> 1) & 0x7fffffff) & 0xffffffff;
75  $this->w = self::W ^ ($seed << 18) | (($seed >> 14) & 0x7fffffff) & 0xffffffff;
76  }

Field Documentation

◆ $seed

$seed
protected

◆ W

const W = 88675123

◆ X

const X = 123456789

◆ Y

const Y = 362436069

◆ Z

const Z = 521288629

The documentation for this class was generated from the following file: