När du skapar en Random med new Random() initieras den med ett seed-värde som baseras på datorns interna klocka. Eftersom du skapar en ny Random varje gång du anropar Random() och koden kör i en loop hinner klockan aldrig "ticka" och värdet från .Next() blir alltid samma.
Du vill ha en instans av Random som du hämtar värden ifrån. Något i stil med
private static IEnumerable<int> RandomInts( int startingAt, int until )
{
var r = new Random();
while ( true ) {
yield return r.Next( startingAt, until );
}
}
public static void Main(string[] args)
{
var rNumbers = RandomInts( 1, 26 ).Take( 7 ).ToArray();
}