using static System.Console;
using System.Collections.Generic;
public static class Sorteio {
public static void Main() {
var lista = new List<string>() { "Alaor", "Joseval", "Salustiano", "Gomide", "Castro" };
lista.Shuffle();
foreach (var valor in lista) {
WriteLine(valor);
}
WriteLine("//////////");
string[] array = { "Alaor", "Joseval", "Salustiano", "Gomide", "Castro" };
array.Shuffle(2);
foreach (var valor in array) {
WriteLine(valor);
}
WriteLine("//////////");
int[] array2 = { 1, 2, 3, 4, 5 };
array2.Shuffle(1,4);
foreach (var valor in array2) {
WriteLine(valor);
}
}
}
namespace System.Collections.Generic {
public static class IListExt {
static Random r = new Random(DateTime.Now.Millisecond);
public static void Shuffle<T>(this IList<T> list, int lowerItem, int upperItem) {
upperItem = upperItem > list.Count ? list.Count : upperItem;
lowerItem = lowerItem < 0 ? 0 : lowerItem;
for (int i = lowerItem; i < upperItem; i++) {
int j = r.Next(i, upperItem);
T tmp = list[j];
list[j] = list[i];
list[i] = tmp;
}
}
public static void Shuffle<T>(this IList<T> list, int upperItem) {
list.Shuffle(0, upperItem);
}
public static void Shuffle<T>(this IList<T> list) {
list.Shuffle(0, list.Count);
}
}
}
//https://pt.stackoverflow.com/q/17783/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCnB1YmxpYyBzdGF0aWMgY2xhc3MgU29ydGVpbyB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpIHsKICAgICAgICB2YXIgbGlzdGEgPSBuZXcgTGlzdDxzdHJpbmc+KCkgeyAiQWxhb3IiLCAiSm9zZXZhbCIsICJTYWx1c3RpYW5vIiwgIkdvbWlkZSIsICJDYXN0cm8iIH07CiAgICAgICAgbGlzdGEuU2h1ZmZsZSgpOwogICAgICAgIGZvcmVhY2ggKHZhciB2YWxvciBpbiBsaXN0YSkgewogICAgICAgICAgICBXcml0ZUxpbmUodmFsb3IpOwogICAgICAgIH0KICAgICAgICBXcml0ZUxpbmUoIi8vLy8vLy8vLy8iKTsKICAgICAgICBzdHJpbmdbXSBhcnJheSA9IHsgIkFsYW9yIiwgIkpvc2V2YWwiLCAiU2FsdXN0aWFubyIsICJHb21pZGUiLCAiQ2FzdHJvIiB9OwogICAgICAgIGFycmF5LlNodWZmbGUoMik7CiAgICAgICAgZm9yZWFjaCAodmFyIHZhbG9yIGluIGFycmF5KSB7CiAgICAgICAgICAgIFdyaXRlTGluZSh2YWxvcik7CiAgICAgICAgfQogICAgICAgIFdyaXRlTGluZSgiLy8vLy8vLy8vLyIpOwogICAgICAgIGludFtdIGFycmF5MiA9IHsgMSwgMiwgMywgNCwgNSB9OwogICAgICAgIGFycmF5Mi5TaHVmZmxlKDEsNCk7CiAgICAgICAgZm9yZWFjaCAodmFyIHZhbG9yIGluIGFycmF5MikgewogICAgICAgICAgICBXcml0ZUxpbmUodmFsb3IpOwogICAgICAgIH0KICAgIH0KfQoKbmFtZXNwYWNlIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljIHsKICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSUxpc3RFeHQgewogICAgICAgIHN0YXRpYyBSYW5kb20gciA9IG5ldyBSYW5kb20oRGF0ZVRpbWUuTm93Lk1pbGxpc2Vjb25kKTsKCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIFNodWZmbGU8VD4odGhpcyBJTGlzdDxUPiBsaXN0LCBpbnQgbG93ZXJJdGVtLCBpbnQgdXBwZXJJdGVtKSB7CiAgICAgICAgICAgIHVwcGVySXRlbSA9IHVwcGVySXRlbSA+IGxpc3QuQ291bnQgPyBsaXN0LkNvdW50IDogdXBwZXJJdGVtOwogICAgICAgICAgICBsb3dlckl0ZW0gPSBsb3dlckl0ZW0gPCAwID8gMCA6IGxvd2VySXRlbTsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IGxvd2VySXRlbTsgaSA8IHVwcGVySXRlbTsgaSsrKSB7CiAgICAgICAgICAgICAgICBpbnQgaiA9IHIuTmV4dChpLCB1cHBlckl0ZW0pOwogICAgICAgICAgICAgICAgVCB0bXAgPSBsaXN0W2pdOwogICAgICAgICAgICAgICAgbGlzdFtqXSA9IGxpc3RbaV07CiAgICAgICAgICAgICAgICBsaXN0W2ldID0gdG1wOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgU2h1ZmZsZTxUPih0aGlzIElMaXN0PFQ+IGxpc3QsIGludCB1cHBlckl0ZW0pIHsKICAgICAgICAgICAgbGlzdC5TaHVmZmxlKDAsIHVwcGVySXRlbSk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgU2h1ZmZsZTxUPih0aGlzIElMaXN0PFQ+IGxpc3QpIHsKICAgICAgICAgICAgbGlzdC5TaHVmZmxlKDAsIGxpc3QuQ291bnQpOwogICAgICAgIH0KICAgIH0KfQoKLy9odHRwczovL3B0LnN0YWNrb3ZlcmZsb3cuY29tL3EvMTc3ODMvMTAx