2017-11-30 4 views
1

임의의 질문을 반복하지 않고 5 개의 임의 질문을 얻기 위해 20 개 질문의 배열에서 무작위로 추출하는 작은 퀴즈 프로그램을 작성하려고합니다. 검색 한 결과 "정적 "그러나 나는 또한 System.Random() 을 시도 작동하지 않았지만 항상 같은 질문을 반복 나는 또한 양식로드시 초기 질문을 필요로하고 버튼을 제출 한 사람은 그래서 클릭 너무 겹칠 수 없다 어떤 도움이 필요합니까?vb.Net을 반복하지 않고 무작위로

+0

무엇이 잘못되었는지 짐작하기 위해 왜 코드를 게시하지 않으려 고 잘못된 것을 말할 수 있습니까? 여기에서 화면을 볼 수 없습니다. 또한 목록에서 무작위로 선택하면 그 중 아무도 반복하지 않을 것입니다. – Plutonix

+0

코드가 작동하지 않으면 코드가 잘못되었습니다. 우리가 당신의 코드를 볼 수 없다면, 우리는 그것이 무엇이 잘못되었는지를 볼 수 없습니다. 중복을 피하는 방법에 대한 대답은 눈에 띄게 분명해야합니다. 복권으로 중복 수령을 피하는 방법은 무엇입니까? 선택 후에는 풀에서 제거합니다. 왜이 경우에 그것은 다른 aby이어야합니까? – jmcilhinney

답변

1

임의의 숫자가 아니라 무작위로 정렬 된 숫자의 범위를 원합니다.

질문을 단순히 문자열 배열에 저장한다고 가정하면 LINQ의 OrderBy를 사용하여 1-20의 숫자를 임의로 정렬 한 다음 LINQ의 Take를 사용하여 순서를 임의화한 후 처음 5 개의 숫자를 가져올 수 있습니다.

는이 예를 살펴 보자 :

Dim indices() As Integer = Enumerable.Range(0, questions.Length - 1).OrderBy(Function(i) r.Next()).Take(5).ToArray() 

바이올린 : 여기

+0

고맙습니다. –

0

Live Demo 중복을 피하기 위해 내 시도이다 그러나이 코드 "에서 임의의 값을 선택하도록되어 를 작동하지 않았다 목록에서 그 값을 지우고 목록에서 그 값을 제거하십시오.

Dim ind As New List(Of Integer) 
Dim pick As New List(Of Integer) 

For j = 0 To 13 
      pick.Add(j) 
     Next 
     Dim randomvalue As Random = New System.Random 
     Randomize() 
     For j = 0 To 6 
      Dim val = randomvalue.Next(pick(pick.Count - 1)) 
      ind.Add(val) 
      pick.Remove(val) 
     Next 
관련 문제