Загрузка данных


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

namespace ConsoleApplication3
{
    class Program
    {

        static uint[] LFSR(uint reg, int[] shift)
        {
            uint xor = reg & 1;
            uint o = xor;
            for (int i = shift.Length - 2; i >= 0; i--)
            {
                xor ^= (reg >> shift[i]) & 1;
            }
            reg = reg >> 1 | xor << shift[0];

            return new uint[] { o, reg };
        }

        static void Main(string[] args)
        {
            uint reg1 = 43949, reg2 = 181, reg3 = 3613104981;
            int[] shifts1 = new int[5] { 15, 5, 3, 2, 0 };
            int[] shifts2 = new int[5] { 7, 4, 3, 2, 0 };
            int[] shifts3 = new int[5] { 31, 7, 6, 2, 0 };

            // Генерируем 100 бит
            for (int i = 0; i < 100; i++)
            {
                uint[] rez1 = LFSR(reg1, shifts1);
                uint[] rez2 = LFSR(reg2, shifts2);
                uint[] rez3 = LFSR(reg3, shifts3);

                reg1 = rez1[1];
                reg2 = rez2[1];
                reg3 = rez3[1];

                // Выход генератора Геффа (функция большинства)
                uint bit = (rez1[0] & rez2[0]) ^ (rez1[0] & rez3[0]) ^ (rez2[0] & rez3[0]);
                
                Console.Write(bit);
            }

            Console.ReadKey();
        }
    }
}