using System;
using System.Collections.Generic;
namespace RandomTest
{
static class RandomInts
{
private static Random random = new Random();
public static HashSet<int> Shuffle(int howMany, int from, int to)
{
CheckRange(howMany, from, to);
var result = new HashSet<int>();
while (result.Count < howMany)
{
result.Add(random.Next(from, to + 1));
}
return result;
}
private static void CheckRange(int howMany, int from, int to)
{
int count = 0;
for (int i = from; i < to + 1; i++, count++) ;
if (howMany > count)
throw new Exception("Inifinite looped range exception.");
}
}
class Program
{
static void Main(string[] args)
{
foreach (int i in RandomInts.Shuffle(howMany: 10, from: 1, to: 100))
{
Console.WriteLine(i);
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKIApuYW1lc3BhY2UgUmFuZG9tVGVzdAp7CiAgICBzdGF0aWMgY2xhc3MgUmFuZG9tSW50cwogICAgewogICAgICAgIHByaXZhdGUgc3RhdGljIFJhbmRvbSByYW5kb20gPSBuZXcgUmFuZG9tKCk7CiAKICAgICAgICBwdWJsaWMgc3RhdGljIEhhc2hTZXQ8aW50PiBTaHVmZmxlKGludCBob3dNYW55LCBpbnQgZnJvbSwgaW50IHRvKQogICAgICAgIHsKICAgICAgICAgICAgQ2hlY2tSYW5nZShob3dNYW55LCBmcm9tLCB0byk7CiAKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBIYXNoU2V0PGludD4oKTsKICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC5Db3VudCA8IGhvd01hbnkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJlc3VsdC5BZGQocmFuZG9tLk5leHQoZnJvbSwgdG8gKyAxKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9CiAKICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIENoZWNrUmFuZ2UoaW50IGhvd01hbnksIGludCBmcm9tLCBpbnQgdG8pCiAgICAgICAgewogICAgICAgICAgICBpbnQgY291bnQgPSAwOwogICAgICAgICAgICBmb3IgKGludCBpID0gZnJvbTsgaSA8IHRvICsgMTsgaSsrLCBjb3VudCsrKSA7CiAKICAgICAgICAgICAgaWYgKGhvd01hbnkgPiBjb3VudCkKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkluaWZpbml0ZSBsb29wZWQgcmFuZ2UgZXhjZXB0aW9uLiIpOwogICAgICAgIH0KICAgIH0KIAogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIGZvcmVhY2ggKGludCBpIGluIFJhbmRvbUludHMuU2h1ZmZsZShob3dNYW55OiAxMCwgZnJvbTogMSwgdG86IDEwMCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9