Vb.net 在Visual Basic中生成三个唯一的随机数?
我最近一直在开发一个可以显示三张随机照片的应用程序。表单由三个图片框和一个按钮组成。当用户单击按钮时,将显示三个不同的图像。然而,问题是,这三个图像并不总是唯一的,大多数情况下会出现双倍图像,通常也会出现三倍图像。我试图实现一个函数来捕捉这一点,但它成功地降低了出现相同图像的可能性。有50多张图片可供选择,所以还不够。以下是我提出的失败解决方案的代码:Vb.net 在Visual Basic中生成三个唯一的随机数?,vb.net,random,Vb.net,Random,我最近一直在开发一个可以显示三张随机照片的应用程序。表单由三个图片框和一个按钮组成。当用户单击按钮时,将显示三个不同的图像。然而,问题是,这三个图像并不总是唯一的,大多数情况下会出现双倍图像,通常也会出现三倍图像。我试图实现一个函数来捕捉这一点,但它成功地降低了出现相同图像的可能性。有50多张图片可供选择,所以还不够。以下是我提出的失败解决方案的代码: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As Syst
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
RandomImageOne()
RandomImageTwo()
RandomImageThree()
If imagenumber1.Text or imagenumber2.Text = imagenumber3.Text Then
RandomImageThree()
End If
If imagenumber1.Text or imagenumber3.Text = imagenumber2.Text Then
RandomImageTwo()
End If
If imagenumber3.Text or imagenumber2.Text = imagenumber1.Text Then
RandomImageOne()
End If
End Sub
“RandomImage”函数在标签中生成一个随机数(例如imagenumber1),这些数字与50幅图像中的一幅图像的数量相关。我意识到这可能不是最聪明的方法,但我不熟悉任何其他方法
我需要能够生成三个唯一的数字,这样我就不必担心编程来阻止双重和三重映像,或者创建一个解决方案,在100%的时间内捕获双重或三重映像
任何帮助都将不胜感激,特别是如果解释得简单的话。谢谢。我将生成随机图像1和图像2,使用while循环测试图像2是否不同。只有完成了这一步,我才能继续生成第三幅图像 因此,在粗略的代码中(我已经有一段时间没有正确使用VBA了):
这可能不是最有效的方法,但它是有效的 首先创建一个函数,该函数返回三个项目的列表:
Public Function ProvideUniqueNumbers(NoList As List(Of Integer), _
HowManyToReturn As Integer) As List(Of Integer)
Dim Generator As System.Random = New System.Random()
Dim n As Integer = NoList.Count
Dim index As Integer = Generator.Next(1, n)
Dim ReturnList As List(Of Integer) = New List(Of Integer)
For i = 1 To HowManyToReturn
n = NoList.Count
index = Generator.Next(1, n)
ReturnList.Add(NoList(index))
NoList.RemoveAt(index)
'NoList.Dump()
Next
Return ReturnList
End Function
然后为集合创建一个整数列表。例如:
List(Of Integer) MyList = New List(Of Integer)
For i As Integer = 0 To YourImageArray.Count - 1
MyList.Add(i)
Next
最后调用函数并分发结果:
Dim result As List(Of Integer) = ProvideUniqueNumbers(MyList,3)
image1 = YourImageArray(result(0))
image2 = YourImageArray(result(1))
image3 = YourImageArray(result(2))
这不是一个解决方案,而是一个注释 这和你想象的不一样
If imagenumber1.Text or imagenumber2.Text = imagenumber3.Text Then
RandomImageThree()
End If
你必须比较每个元素
If imagenumber1.Text = imagenumber3.Text or imagenumber2.Text = imagenumber3.Text Then
RandomImageThree()
End If
If imagenumber1.Text = imagenumber3.Text or imagenumber2.Text = imagenumber3.Text Then
RandomImageThree()
End If