febb: (Default)
febb ([personal profile] febb) wrote2021-12-19 12:25 am

.NET Random class?

Хотел пощупать Random class in .NET.
Написал программу, которая считает количество циклов,
приводящих к повторному случайному числу.
Если там только int 32bit представление,
то можно было бы увидеть зацикливание,
но там оказывается больше, хотя seed - int.




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CheckRandom
{
    class Program
    {
        static void TestRandomLoop(int seed)
        {
            Random rnd = new Random(seed);
            int n0 = rnd.Next();
            Console.WriteLine($"Seed: {seed}\t\tn0: {n0} ");
            long len = 0;
            for (;;)
            {
                ++len;
                int n = rnd.Next();
                if (n == n0)
                {
                    Console.WriteLine($"\t\tLength: {len}  ");
                    len = 0;
                    //break;
                }
                if(len % 100000000 == 0)
                    Console.Write($"\t\tLength: {len}   \r");

            }
        }

        static void Main(string[] args)
        {
            for(int s=0; ;++s)
                TestRandomLoop(s);
        }
    }
}