2012-09-05 2 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

잘 사시가 순열 알고리즘을 원한다고 생각하는 I 오전 , 대신 무작위로 선택을 대체? –

+1

@Phillip IMO는 어느 방식 으로든 해석 될 수 있습니다 - 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