Vb.net 如何更改我的代码以使其工作一定次数?
我的代码从txt文件中获取单词列表,并随机选择单词。然而,同一个词可以出现不止一次,我需要知道如何阻止这种情况发生 代码如下:Vb.net 如何更改我的代码以使其工作一定次数?,vb.net,list,random,Vb.net,List,Random,我的代码从txt文件中获取单词列表,并随机选择单词。然而,同一个词可以出现不止一次,我需要知道如何阻止这种情况发生 代码如下: 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
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)
Dim randomWords As New List(Of String)(File.ReadAllLines(Application.StartupPath & "\Random\fnames.txt"))
Dim random As New Random
randomWords.Sort(Function(s1 As String, s2 As String) random.Next(-1, 1))
For index As Integer = 0 To randomWords.Count - 1
Label2.Text = randomWords(index)
Next
也许这可能行得通,尽管它是英文的,而不是代码:(
这应防止立即重复:
Dim random As New Random
'Just create a temporary holder for comparison
Dim word As String = Label2.Text
'Run a while loop that works as long as there
'is no change to the word. This should prevent
'back to back repeats.
While word = Label2.Text
word = (randomWords(random.Next(0, randomWords.Count - 1)).ToString)
End While
Label2.Text = word
如果你不想让它再次重复,你可能应该从随机词列表中删除使用过的词
Dim random As New Random
Label2.Text = (randomWords(random.Next(0, randomWords.Count - 1)).ToString)
randomWords.Remove(Label2.Text)
修改For循环以防止aryName中的重复项进入随机字:
For i = 0 To aryName.Length - 1
If randomWords.Contains(aryName(i)) = False Then
randomWords.Add(aryName(i))
End If
Next
您可以a)从列表中删除所选单词,或b)首先对列表进行随机排序。
选项a)已在另一个答案中说明
选项b)允许您在内存中保留所有单词。代码如下:
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)
Dim randomWords As New List(Of String)(File.ReadAllLines(Application.StartupPath & "\Random\fnames.txt"))
Dim random As New Random
randomWords.Sort(Function(s1 As String, s2 As String) random.Next(-1, 1))
For index As Integer = 0 To randomWords.Count - 1
Label2.Text = randomWords(index)
Next
你是说输入列表中有重复项,还是同一个单词被多次选择,aryName中多次出现随机单词?是否使用随机洗牌方法?@ChrisF否列表中没有重复的单词,但相同的单词被多次选择times@BryceAtNetwork23是的,他们are@user1081679:我希望您将其视为伪代码。它可能需要根据代码的实际操作方式进行轻微修改。哪一个不做你想让它做的,你到底想让它做什么?你需要将所有随机单词存储到表单中,以及最后使用的单词的索引中。当请求一个新词时,增加索引并从列表中提取该词。从该文件读取的操作应执行一次。我知道这是有效的,因为我试过了。它会抛出某种错误吗?基本上,所有这些都是检查数组值是否已经存在于随机字中,并且只在不存在时添加它。