Esempio n. 1
0
        private int FindFrame2(uint seed, uint[] Pool)
        {
            var rng = new MersenneTwister_Fast(seed);
            int i;

            rng.Next(PreAdvance + minframe);
            for (i = 0; i < poolsize; i++)
            {
                Pool[i] = rng.Nextuint() >> 27;
            }
            for (i = 0; i < _poolsize; i++)
            {
                if (IVmin[0] <= Pool[i] && Pool[i] <= IVmax[0] &&
                    IVmin[1] <= Pool[i + 1] && Pool[i + 1] <= IVmax[1] &&
                    IVmin[2] <= Pool[i + 2] && Pool[i + 2] <= IVmax[2] &&
                    IVmin[3] <= Pool[i + 3] && Pool[i + 3] <= IVmax[3] &&
                    IVmin[4] <= Pool[i + 4] && Pool[i + 4] <= IVmax[4] &&
                    IVmin[5] <= Pool[i + 5] && Pool[i + 5] <= IVmax[5])
                {
                    break;
                }
            }
            if (i == _poolsize)
            {
                return(0);
            }
            return(i + minframe);
        }
Esempio n. 2
0
        private int[] FindFrame(uint seed, uint[] Pool1, uint[] Pool2)
        {
            var rng = new MersenneTwister_Fast(seed);

            int[] result = new int[2];
            int   i;

            rng.Next(PreAdvance + minframe1);
            for (i = 0; i < poolsize1; i++)
            {
                Pool1[i] = rng.Nextuint() >> 27;
            }
            for (i = 0; i < _poolsize1; i++)
            {
                if (IV1[0] == Pool1[i] && IV1[1] == Pool1[i + 1] && IV1[2] == Pool1[i + 2] &&
                    IV1[3] == Pool1[i + 3] && IV1[4] == Pool1[i + 4] && IV1[5] == Pool1[i + 5])
                {
                    break;
                }
            }
            if (i == _poolsize1)
            {
                return(result);
            }
            result[0] = i + minframe1;
            rng.Next(gap);
            for (i = 0; i < poolsize2; i++)
            {
                Pool2[i] = rng.Nextuint() >> 27;
            }
            for (i = 0; i < _poolsize2; i++)
            {
                if (IV2[0] == Pool2[i] && IV2[1] == Pool2[i + 1] && IV2[2] == Pool2[i + 2] &&
                    IV2[3] == Pool2[i + 3] && IV2[4] == Pool2[i + 4] && IV2[5] == Pool2[i + 5])
                {
                    break;
                }
            }
            if (i == _poolsize2)
            {
                return(result);
            }
            result[1] = i + minframe2;
            return(result);
        }
Esempio n. 3
0
        private void parseseed(uint seed, int frame1, int frame2)
        {
            var frame = new Frame_Seed()
            {
                Seed = seed, Frame1 = frame1, Frame2 = frame2
            };
            var rng = new MersenneTwister_Fast(seed);

            rng.Next(PreAdvance + 7 + frame1);
            frame.nature1 = (byte)((rng.Nextuint() * 25ul) >> 32);
            rng.Next(frame2 - frame1 - 1);
            frame.nature2 = (byte)((rng.Nextuint() * 25ul) >> 32);
            lock (_locker)
            {
                seedlist.Add(frame);
                UpdateTable(null);
            }
        }
Esempio n. 4
0
        private void parseseed2(uint seed, int frame)
        {
            var NewFrame = new Frame_Seed()
            {
                Seed = seed, Frame1 = frame,
            };
            var rng = new MersenneTwister_Fast(seed);

            rng.Next(PreAdvance + 7 + frame);
            NewFrame.nature1 = (byte)((rng.Nextuint() * 25ul) >> 32);
            if (Nature != NewFrame.nature1)
            {
                return;
            }
            NewFrame.gender = (byte)((rng.Nextuint() * 252ul) >> 32);
            lock (_locker)
            {
                seedlist.Add(NewFrame);
                seedlist = seedlist.OrderBy(t => t.Seed).ToList();
                UpdateTable(null);
            }
        }