2010-11-19 185 views
0

我想獲得1之間20張隨機數到100,但次數不宜重複....如何獲得隨機數

更新時間: 如果我有20名,其中任何5成隨機選擇一個一個,但名稱來了一次不再被稱爲.....

+7

這不是隨機的。隨機序列_do_有重複的數字。你能澄清嗎? – Oded 2010-11-19 15:37:19

+2

這不是隨機的,但它對於某些事情仍然有用(例如,隨機播放專輯中的歌曲而沒有任何重複)。 – dicroce 2010-11-19 15:38:28

+1

你想隨機洗牌,谷歌漁民。 – 2010-11-19 15:38:41

回答

7

把號碼列表,從列表中挑選:

List<int> numbers = Enumerable.Range(1, 100).ToList(); 

Random rnd = new Random(); 
List<int> picks = Enumerable.Range(1, 20).Select(n => { 
    int index = rnd.Next(numbers.Count); 
    int pick = numbers[index]; 
    numbers.RemoveAt(index); 
    return pick; 
}); 

這可能是解決這個問題的最簡單的方法,但它是不是最有效的。刪除列表中的項目涉及移動以下項目。使用更多的代碼可以避免這種情況,但對於大多數用途而言,代碼足夠好。