2

我需要 5 个 wav 文件在程序结束时随机播放。我知道如何让它播放一首歌,我已经在这个网站上找到了一个代码,但它对我不起作用,它只是每次播放同一首歌。这是代码:

    Public Sub PlayRandomTrack()


    Dim trackNum As Integer = CInt(Rnd() * 5 + 0.5)

    Select Case trackNum
        Case 1
            My.Computer.Audio.Play(My.Resources.CallingMonsters, AudioPlayMode.Background)
        Case 2
            My.Computer.Audio.Play(My.Resources.McclainSisters, AudioPlayMode.Background)
        Case 3
            My.Computer.Audio.Play(My.Resources.Mendler, AudioPlayMode.Background)
        Case 4
            My.Computer.Audio.Play(My.Resources.Pray, AudioPlayMode.Background)
        Case Else
            My.Computer.Audio.Play(My.Resources.WillowWhip, AudioPlayMode.Background)

    End Select
End Sub

然后我将其用作:

    PlayRandomTrack()

我究竟做错了什么?

4

3 回答 3

0

来自MSDN

对于任何给定的初始种子,都会生成相同的数字序列,因为对 Rnd 函数的每次连续调用都使用先前生成的数字作为序列中下一个数字的种子。

在调用 Rnd 之前,使用不带参数的 Randomize 语句来使用基于系统计时器的种子来初始化随机数生成器。

于 2012-11-13T15:40:41.780 回答
0

你可以试试这个,看看它是否有效?

Dim trackNum As Integer = (New Random).Next(1,5)
于 2012-11-13T15:44:15.767 回答
0

试试这个随机函数:

    Dim tempRnd As New Random(Now.Millisecond)
    Dim trackNum As Integer = tempRnd.Next(1, 5)
于 2012-11-13T15:44:51.037 回答