2011-12-23 9 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ファイルから単語を取り出してラベルに入れることになっていますが、問題はありません。言葉が繰り返されることがあります。私は各単語を1回だけ表示したいが、代わりに複数回表示される。私のコードで何が問題になっていますか? (VB)

答えて

2

ランダムな単語をチェックするたびに、単語の配列全体が使用されています。 random.Next()の私の理解は、それが呼び出されるたびに0-nとは異なる乱数を使用するのではなく、0回からn回まで新しい番号を生成します。

これを修正するには、単語を使用するたびに配列を調整します。最後に見つかったものを移動し、範囲1を調整します。

1

重複を避けるために配列から単語を削除すると、それを行うために配列の代わりにListを使用します。

関連する問題