SystemEX  Lacking
Additional generic collection types missing in .net
SystemEx.Random.Isaac32Engine Class Referencesealed

Represents the ISAAC 32-bit random number generator. More...

Public Member Functions

 Isaac32Engine (uint a=0, uint b=0, uint c=0)
 Initializes a new instance of the Isaac32Engine class with the specified seed values.
void Seed (uint a, uint b, uint c, uint[]? s=null)
 Seeds the random number generator with the specified values.
uint Next ()
 Generates the next random number in the sequence.

Detailed Description

Represents the ISAAC 32-bit random number generator.

Constructor & Destructor Documentation

◆ Isaac32Engine()

SystemEx.Random.Isaac32Engine.Isaac32Engine ( uint a = 0,
uint b = 0,
uint c = 0 )

Initializes a new instance of the Isaac32Engine class with the specified seed values.

Parameters
aThe first seed value.
bThe second seed value.
cThe third seed value.
39 {
40 Seed(a, b, c, null);
41 }
Here is the call graph for this function:

Member Function Documentation

◆ Next()

uint SystemEx.Random.Isaac32Engine.Next ( )

Generates the next random number in the sequence.

Returns
The next random number.
94 {
95 if ( _cnt == 0 ) {
96 Isaac();
97 _cnt = Size - 1;
98 return _rsl[_cnt];
99 }
100
101 return _rsl[_cnt--];
102 }

◆ Seed()

void SystemEx.Random.Isaac32Engine.Seed ( uint a,
uint b,
uint c,
uint?[] s = null )

Seeds the random number generator with the specified values.

Parameters
aThe first seed value.
bThe second seed value.
cThe third seed value.
sThe seed array, or null to use default values.
49 {
50 uint aa, bb, cc, dd, ee, ff, gg, hh;
51 aa = bb = cc = dd = ee = ff = gg = hh = GoldenRatio;
52
53 // Seed‑Array oder Null → wie bei dir m_rsl
54 for ( int i = 0 ; i < Size ; i++ )
55 _rsl[i] = s != null ? s[i] : 0;
56
57 _a = a;
58 _b = b;
59 _c = c;
60
61 Shuffle(ref aa, ref bb, ref cc, ref dd, ref ee, ref ff, ref gg, ref hh);
62 Shuffle(ref aa, ref bb, ref cc, ref dd, ref ee, ref ff, ref gg, ref hh);
63 Shuffle(ref aa, ref bb, ref cc, ref dd, ref ee, ref ff, ref gg, ref hh);
64 Shuffle(ref aa, ref bb, ref cc, ref dd, ref ee, ref ff, ref gg, ref hh);
65
66 for ( int i = 0 ; i < Size ; i += 8 ) {
67 aa += _rsl[i + 0]; bb += _rsl[i + 1]; cc += _rsl[i + 2]; dd += _rsl[i + 3];
68 ee += _rsl[i + 4]; ff += _rsl[i + 5]; gg += _rsl[i + 6]; hh += _rsl[i + 7];
69
70 Shuffle(ref aa, ref bb, ref cc, ref dd, ref ee, ref ff, ref gg, ref hh);
71
72 _mem[i + 0] = aa; _mem[i + 1] = bb; _mem[i + 2] = cc; _mem[i + 3] = dd;
73 _mem[i + 4] = ee; _mem[i + 5] = ff; _mem[i + 6] = gg; _mem[i + 7] = hh;
74 }
75
76 for ( int i = 0 ; i < Size ; i += 8 ) {
77 aa += _mem[i + 0]; bb += _mem[i + 1]; cc += _mem[i + 2]; dd += _mem[i + 3];
78 ee += _mem[i + 4]; ff += _mem[i + 5]; gg += _mem[i + 6]; hh += _mem[i + 7];
79
80 Shuffle(ref aa, ref bb, ref cc, ref dd, ref ee, ref ff, ref gg, ref hh);
81
82 _mem[i + 0] = aa; _mem[i + 1] = bb; _mem[i + 2] = cc; _mem[i + 3] = dd;
83 _mem[i + 4] = ee; _mem[i + 5] = ff; _mem[i + 6] = gg; _mem[i + 7] = hh;
84 }
85
86 Isaac();
87 _cnt = Size - 1;
88 }
Here is the caller graph for this function:

The documentation for this class was generated from the following file:
  • Isaac32Engine.cs