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: 0, to: 8))
{
Console.WriteLine(i);
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCm5hbWVzcGFjZSBSYW5kb21UZXN0CnsKICAgIHN0YXRpYyBjbGFzcyBSYW5kb21JbnRzCiAgICB7CiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgUmFuZG9tIHJhbmRvbSA9IG5ldyBSYW5kb20oKTsKCiAgICAgICAgcHVibGljIHN0YXRpYyBIYXNoU2V0PGludD4gU2h1ZmZsZShpbnQgaG93TWFueSwgaW50IGZyb20sIGludCB0bykKICAgICAgICB7CiAgICAgICAgICAgIENoZWNrUmFuZ2UoaG93TWFueSwgZnJvbSwgdG8pOwoKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBIYXNoU2V0PGludD4oKTsKICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC5Db3VudCA8IGhvd01hbnkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJlc3VsdC5BZGQocmFuZG9tLk5leHQoZnJvbSwgdG8gKyAxKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9CgogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgQ2hlY2tSYW5nZShpbnQgaG93TWFueSwgaW50IGZyb20sIGludCB0bykKICAgICAgICB7CiAgICAgICAgICAgIGludCBjb3VudCA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSBmcm9tOyBpIDwgdG8gKyAxOyBpKyssIGNvdW50KyspIDsKCiAgICAgICAgICAgIGlmIChob3dNYW55ID4gY291bnQpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJJbmlmaW5pdGUgbG9vcGVkIHJhbmdlIGV4Y2VwdGlvbi4iKTsKICAgICAgICB9CiAgICB9CgogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIGZvcmVhY2ggKGludCBpIGluIFJhbmRvbUludHMuU2h1ZmZsZShob3dNYW55OiAxMCwgZnJvbTogMCwgdG86IDgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=
Unhandled Exception:
System.Exception: Inifinite looped range exception.
at RandomTest.RandomInts.CheckRange (System.Int32 howMany, System.Int32 from, System.Int32 to) [0x00021] in <65e6ef5457fc4c2ebbd2b92785d87e84>:0
at RandomTest.RandomInts.Shuffle (System.Int32 howMany, System.Int32 from, System.Int32 to) [0x00000] in <65e6ef5457fc4c2ebbd2b92785d87e84>:0
at RandomTest.Program.Main (System.String[] args) [0x00000] in <65e6ef5457fc4c2ebbd2b92785d87e84>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Exception: Inifinite looped range exception.
at RandomTest.RandomInts.CheckRange (System.Int32 howMany, System.Int32 from, System.Int32 to) [0x00021] in <65e6ef5457fc4c2ebbd2b92785d87e84>:0
at RandomTest.RandomInts.Shuffle (System.Int32 howMany, System.Int32 from, System.Int32 to) [0x00000] in <65e6ef5457fc4c2ebbd2b92785d87e84>:0
at RandomTest.Program.Main (System.String[] args) [0x00000] in <65e6ef5457fc4c2ebbd2b92785d87e84>:0