| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | // 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);//         }//     }// }
 |