vb.net - 随机文本列表问题

标签 vb.net

好吧,我一整天都在做这个……我被困住了。我是否只是错过了一些不允许我强制随机函数以确保它在再次循环列表之前遍历列表的东西?问题是它有时会连续显示相同的项目。所以我的目标是获得一个类似“itunes”的功能,它确保当它随机播放时,它不会击中已经“显示”的项目。

我当前的代码:

Dim rng As New System.Random()
    Dim RAND(16) As String
    RAND(0) = "A"
    RAND(1) = "B"
    RAND(2) = "C"
    RAND(3) = "D"
    RAND(4) = "E"
    RAND(5) = "F"
    RAND(6) = "G"
    RAND(7) = "H"
    RAND(8) = "I"
    RAND(9) = "J"
    RAND(10) = "K"
    RAND(11) = "L"
    RAND(12) = "M"
    RAND(13) = "N"
    RAND(14) = "O"
    RAND(15) = "P"
    RAND(16) = "Q"
    If TextBox1.Text = 'Current Text
    Then
    TextBox1.Text = ("""" & RAND(rng.Next(RAND.Count())) & """")
    End If

最佳答案

随机数不是这样工作的。真正的随机序列中有重复的数字。 Random 类有时会返回重复的数字。

为了满足您的要求,您必须跟踪已经使用过的内容,并且不要再次使用它们。

或者更好的是,不必从列表中删除项目,只需随机选择任意两个项目并交换它们即可。执行此操作一定次数,例如 100 次。然后通过调用 String.Join("", RAND) 构建字符串。像这样(未经测试,但这应该给你正确的想法):

Dim rng As New System.Random()
Dim RAND(16) As String

' Initialize your array -- this is shorter than your code, 
' but does the same thing
For i As Integer = 0 to RAND.Length-1
    RAND(i) = Chr(i+65) 
Next

' Pick two random characters and swap them. Do this 100 times.
For i As Integer = 1 to 100
    Dim first As Integer = rng.Next(RAND.Length)
    Dim second As Integer = rng.Next(RAND.Length)
    Dim temp = RAND(first)
    RAND(first) = RAND(second)
    RAND(second) = temp
Next

TextBox1.Text = String.Join("", RAND)

关于vb.net - 随机文本列表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21053399/

相关文章:

mysql - SQL 条件 : using Regex formatter for "Like"

c# - 如何在 VBCodeProvider 中启用隐式续行?

c# - 如何在 VB.Net/C# 和 ASP.NET 中的下拉列表中显示对象属性

mysql - 在 VB.Net 中搜索过滤 Mysql/Gridview

json - JSON 数组字符串中的表名称

VB.NET 如何重用/重新查询/重置/清除现有图表以显示新数据

vb.net - Windows 身份验证模式的连接字符串

vb.net - 如何通过 VB.Net 使用 ffmpeg 合并两个视频或添加 Logo ?

mysql - VB.Net 函数返回 MySql 结果二维数组

mysql - 插入后mysql中的重复记录