// using System; // // // namespace CombatLibrary.CombatLibrary.CombatCore.Utility // { // public class CombatRandom // { // // private const int MBIG = 2147483647; // // private const int MSEED = 161803398; // // private const int MZ = 0; // public int inext; // public int inextp; // private int[] SeedArray = new int[56]; // // public int randCount; // // public CombatRandom() // : this(Environment.TickCount) // { // } // // // public CombatRandom(int Seed) // { // int num1 = 161803398 - (Seed == int.MinValue ? int.MaxValue : Math.Abs(Seed)); // this.SeedArray[55] = num1; // int num2 = 1; // for (int index1 = 1; index1 < 55; ++index1) // { // int index2 = 21 * index1 % 55; // this.SeedArray[index2] = num2; // num2 = num1 - num2; // if (num2 < 0) // num2 += int.MaxValue; // num1 = this.SeedArray[index2]; // } // // for (int index3 = 1; index3 < 5; ++index3) // { // for (int index4 = 1; index4 < 56; ++index4) // { // this.SeedArray[index4] -= this.SeedArray[1 + (index4 + 30) % 55]; // if (this.SeedArray[index4] < 0) // this.SeedArray[index4] += int.MaxValue; // } // } // // this.inext = 0; // this.inextp = 21; // Seed = 1; // } // // protected virtual float Sample() => this.InternalSample() * (float)4.6566128752458E-10; // // private int InternalSample() // { // int inext = this.inext; // int inextp = this.inextp; // int index1; // if ((index1 = inext + 1) >= 56) // index1 = 1; // int index2; // if ((index2 = inextp + 1) >= 56) // index2 = 1; // int num = this.SeedArray[index1] - this.SeedArray[index2]+randCount; // if (num == int.MaxValue) // --num; // if (num < 0) // num += int.MaxValue; // // this.SeedArray[index1] = num; // this.inext = index1; // this.inextp = index2; // randCount+=1000000; // if (randCount < 0) // { // // randCount = 0; // } // // return num; // } // // // public virtual int Next() => this.InternalSample(); // // private float GetSampleForLargeRange() // { // int num = this.InternalSample(); // if (this.InternalSample() % 2 == 0) // num = -num; // return (num + (float)2147483646.0) / (float)4294967293.0; // } // // // public virtual int Next(int minValue, int maxValue) // { // if (minValue > maxValue) // throw new ArgumentOutOfRangeException(("Argument_MinMaxValue")); // long num = (long) maxValue - (long) minValue; // return num <= (long) int.MaxValue ? (int) (this.Sample() * num) + minValue : (int) ((long) (this.GetSampleForLargeRange() * num) + (long) minValue); // } // // // public virtual int Next(int maxValue) // { // if (maxValue < 0) // throw new ArgumentOutOfRangeException("ArgumentOutOfRange_MustBePositive"); // return (int) (this.Sample() *maxValue); // } // // // // // public virtual void NextBytes(byte[] buffer) // { // if (buffer == null) // throw new ArgumentNullException(nameof(buffer)); // for (int index = 0; index < buffer.Length; ++index) // buffer[index] = (byte) (this.InternalSample() % 256); // } // } // }