2012-09-05 257 views
-6

蘋果,芒果,木瓜,香蕉,番石榴,菠蘿 - 如何使用c#隨機生成這些單詞(一個接一個)?請幫我從話我的列表中隨機產生的話..生成隨機詞

回答

4
Random rnd = new Random(); 
string GetRandomFruit() 
{ 
    string[] fruits = new string[] { "apple", "mango", "papaya", "banana", "guava", "pineapple" }; 
    return fruits[rnd.Next(0,fruits.Length)]; 
} 
+0

我是正確的思想,薩西希望置換算法,而不是隨機選擇更換? –

+1

@Phillip國際海事組織可以解釋任何方式 - OP不明確。 – StuartLC

3

你可以得到「隨機排序」與LINQ的OrderBy方法和使用Guid小號

var words = new [] {"apple", "mango", "papaya", "banana", "guava", "pineapple"}; 
var wordsInRandomOrder = words.OrderBy(i => Guid.NewGuid()); 

foreach(var word in wordsInRandomOrder) 
{ 
    Console.WriteLine(word); 
} 

以下foreach將按照隨機順序從words陣列給您每個項目一次。

+0

我喜歡你的解決方案!除了Sasi在標籤中標明瞭C#-2。 –

2

你可以寫下面的代碼。

string[] fruits = new string[] { "apple", "mango", "papaya", "banana", "guava", "pineapple" }; 
Console.WriteLine(fruits[new Random().Next(0, fruits.Length)]); 
+0

你試過這個嗎?創建一個新的Random()可以使用相同的種子進行播種並生成相同的輸出。 – StuartLC

3

可以使用費雪耶茨在陣列中的位置洗牌做的:

static class ArrayMethods 
{ 
    private static readonly Random rng = new Random(); 
    public static void Shuffle<T>(IList<T> list) 
    { 
     var r = rng; 
     var len = list.Count; 
     for(var i = len-1; i >= 1; --i) 
     { 
      var j = r.Next(i); 
      var tmp = list[i]; 
      list[i] = list[j]; 
      list[j] = tmp; 
     } 

    } 
} 

如下:

var arr = new[]{ 
    "apple", 
    "mango", 
    "papaya", 
    "banana", 
    "guava", 
    "pineapple" 
}; 
ArrayMethods.Shuffle(arr); 
foreach(var item in arr) 
    //print 'em out