C# — Из-за чего нестабильный «Random»?
Потому что каждый раз идёт сравнение с новым рандомным числом.
А вообще, признаться, за такой код хочется что-нибудь оторвать =))))
...Console.WriteLine((new Random()).Next(1, 4).toString());
Автору скорее всего нужно применение весовых коэфициентов к каждому элементу
Всё это можно сделать чуть проще через список весов (количество вхождений брал с потолка):var probabilityList = new List<string>();
probabilityList.AddRange(Enumerable.Repeat("1", 40));
probabilityList.AddRange(Enumerable.Repeat("2", 30));
probabilityList.AddRange(Enumerable.Repeat("3", 20));
probabilityList.AddRange(Enumerable.Repeat("4", 10));

var rnd = new Random();
var randomItem = probabilityList[rnd.Next(probabilityList.Count)];