2011-01-30 4 views
2

입니다 :주어진 문자열 배열을 무작위로 정렬하는 가장 간단한 방법은 무엇입니까? 내가 생각 해낸 무엇

RandomSort() 
{ 
    string[] list = { "Alpha", "Beta", "Gamma", ... } 
    Random rnd = new Random(); 
    string[] list2 = list.OrderBy((x) => rnd.NextDouble()).ToArray(); 
} 

어쩌면 Dictionary 또는 무언가를 사용하여, 다른 방법이 있나요? 감사.

+3

[이 질문] (http://stackoverflow.com/q/108819/128397)의 정확한 복제본, 여기서 가장 좋은 대답은 실제로 받아 들인 대답이 아니지만 [this one] (http://stackoverflow.com/ 110570 # 110570)에 C# 코드가있는 피셔 - 예이츠 셔플 (일컬어 Knuth Shuffle 구현)에 대한 질문/108819/best-way-to-randomize-a-string-array-in-c/ –

+0

임의의 정렬 검색을했는데 나타나지 않았습니다. 링크를 가져 주셔서 감사합니다. – ja72

+1

예를 들어, 온라인 포커를하기 위해 카드 덱을 생성하기 위해 섞은 경우, 이것은 충분히 랜덤하지 않습니다. "무작위"는 의사 랜덤입니다. pseudo-random shuffled deck의 작은 샘플이 주어지면 다른 모든 카드의 순서를 예측하는 것은 쉬운 연습입니다. 정말로 예측할 수없는 임의성이 필요하다면 암호 알고리즘과 같은 더 나은 무작위 알고리즘을 사용하십시오. –

답변

6

확실히 간단하지만 O (n log (n))입니다. Fisher Yates 셔플을 사용하면 실적을 향상시킬 수 있습니다.

관련 문제