public void Run() { var tasks = new Task[Pow2.T08]; var indices = range(0xFFFFul, 0xFFFFFFFFul).Where(x => x % 2 != 0).Take(Pow2.T08).ToArray(); for (var i = 0u; i < tasks.Length; i++) { var random = Rng.Pcg64(0, indices[i]).ToPolyrand(); var context = Fsm.CreateContext(random); var transF = TransRules().ToFunction(); var machine = Fsm.Machine($"Fsm1-{i}", context, S0, S5, transF); tasks[i] = Fsm.Run(machine); } Task.WaitAll(tasks); }