2011-12-23 4 views
0
Dim aryName As String() = Nothing 
aryName = File.ReadAllLines(Application.StartupPath & "\Random\fnames.txt") 

Dim randomWords As New List(Of String) 
For i = 0 To aryName.Length - 1 
If randomWords.Contains(aryName(i)) = False Then 
    randomWords.Add(aryName(i)) 
End If 
Next 

Dim random As New Random 
Label2.Text = (randomWords(random.Next(0, randomWords.Count - 1)).ToString) 

그 코드는 txt 파일에서 단어를 가져 와서 레이블에 넣으려는 것으로되어 있지만 문제는 없습니다. 때로는 단어가 반복됩니다. 각 단어가 한 번 나타나기를 원하지만 대신 여러 번 나타납니다.내 코드에 어떤 문제가 있습니까? (VB)

답변

2

임의의 단어를 확인할 때마다 전체 단어 배열을 사용하고 있습니다. random.Next()에 대한 나의 이해는 그것이 호출 될 때마다 0-n과 다른 난수를 사용하는 것이 아니라 n 번 발생하기 전에 반복 할 수있는 0-n으로부터 새로운 수를 생성한다는 것입니다.

이 문제를 해결하려면 단어를 사용할 때마다 배열을 조정하십시오. 찾은 단어를 끝까지 옮기고 범위 -1을 조정하십시오.

1

한 번만 중복을 피하기 위해 배열을 제거하면 배열 대신 List를 사용하여 행운을 빌어 요!

관련 문제