private static readonly Random Dice = new Random();
private static bool OneIn(int odds)
return Dice.Next(odds) == 0;
private static T Pick<T>(T[] array)
return array[Dice.Next(array.Length)];
private static T Take<T>(ref T[] array)
var index = Dice.Next(array.Length);
var picked = array[index];
array = array.Where((element, i) => i != index).ToArray();
private static readonly string[] PoliticalDirections =
private static readonly string[] PoliticalIssues =
"UNIVERSAL BASIC INCOME",
private static readonly string[] PoliticalGroups =
public static string GetPoliticalAffiliation()
var strb = new StringBuilder();
strb.Append(Pick(PoliticalDirections)).Append(" ");
var politicalIssues = PoliticalIssues;
for (var c = 0; c < 1 + Dice.Next(3); c++)
strb.Append(OneIn(2) ? "PRO-" : "ANTI-").Append(Take(ref politicalIssues)).Append(", ");
strb.Append(" ").Append(Pick(PoliticalGroups));
public static void Main()
Console.WriteLine(GetPoliticalAffiliation());