2016-07-08 3 views
1

나는 내부에 24 개의 요소가있는 1 차원 배열을 가지고 있습니다. 나는 모두 무작위 순서로 반복하고 싶다. 1에서 24까지 반복하는 법을 알고 있지만, 무작위로 하나를 선택한 다음 다른 요소를 선택하는 방법도 있습니다. 모든 요소가 선택 될 때까지 어떻게됩니까?배열의 모든 요소를 ​​무순 서로 반복합니다.

VB 스크립팅 언어 (QAWizard)를 사용하고 있으므로 생각이나 VB 코드로 충분할 것입니다.

+0

난 당신이 셔플을 찾고 있습니다 * 생각 *. 무작위 순서로 루핑을하면 한 번만 나오게됩니다. ("QA"가 어떤 종류의 퀴즈를 의미한다면 필수적이라고 생각합니다.) – Plutonix

+2

@Plutonix QA 마법사의 품질 보증은 품질 보증의 약자라고 생각합니다. 그것은 소프트웨어 테스트를위한 원조 인 것 같습니다. .Net 언어로 보이지 않기 때문에 "모든 아이디어 나 VB 코드가 충분할 것"이라는 OP의 주장이 맞다는 것을 확신하지 못했습니다. – Blackwood

+0

@Blackwood 수 - 퀴즈 게임이 많이 있습니다. 때때로 게시되는 질문. 많은 문맥이 주어지지 않았습니다. OP : 그렇다면 적절한 셔플이 더 좋을 수 있습니다. 편견없는 결과에 대해 문서화/보증하기가 더 쉽습니다. – Plutonix

답변

1

당신은 LINQ를 사용할 수 있습니다

Dim randomOrder = From item In yourArray Order By Guid.NewGuid() 

For Each item In randomOrder 

Next 

Guid 트릭 컬렉션을 "랜덤"하는 가장 좋은 방법이 아니다, 이런 셔플 접근 방식을 살펴 있습니다 https://stackoverflow.com/a/7513502/284240

2

을 당신은 LINQ의 사용할 수 있습니다 OrderByRandom.Next 무작위을 주문하기 :

Private Shared _rnd As New Random 

Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click 
    Dim arr As Integer() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 
    For Each value In arr.OrderBy(Function(x) _rnd.Next()) 
     Debug.WriteLine(value) 
    Next 

End Sub 
+1

'Random'은'Guid.NewGuid'보다 좋을 수도 있지만 OP는 지역 변수를 사용하지 않는 것을 기억해야합니다. 앱이 멀티 스레드되기 시작할 때까지는 '공유 된'접근 방식이 좋습니다. 그럼 당신이 뭔가가 필요합니다 [이] (http://stackoverflow.com/a/19271062/284240) ;-) –

+0

@ TimSchmeiter 답장을 보내 주셔서 감사합니다, 당신은 부분을 정교하게 주시겠습니까 : "(함수 (x) _rnd.next()) "? 품질 보증 (QA) 마법사는 그런 빌드 인 기능을 가지고 있지 않습니다. 직접 작성해야합니다. 그래서 그게 도움이 될 수 있다면 고맙겠습니다. –

관련 문제