2016-09-21 151 views
0

我想創建一個程序從蛋糕旋轉陣列中隨機生成一個名稱。我似乎無法得到它的工作。目前,消息框顯示一個隨機數,而不是存儲在數組中的名稱。請幫助!從數組中隨機生成一個元素VB

Public Class Form1 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Dim strNames(18) As String 
     Dim frances, emma, piotr, jake, jess, jonah, john, flynn, will, nick As String 

     strNames(0) = "frances" 
     strNames(1) = "emma" 
     strNames(2) = "piotr" 
     strNames(3) = "jake" 
     strNames(4) = "jess" 
     strNames(5) = "jonah" 
     strNames(6) = "john" 
     strNames(7) = "flynn" 
     strNames(8) = "will" 
     strNames(9) = "nick" 


     Dim rnum As Integer 
     Dim temp As String 
     For i = 0 To 18 
      strNames(i) = i 
     Next i 

     Randomize() 
     For i = 0 To 9 
      rnum = Int(Rnd() * (UBound(strNames) - LBound(strNames) + 1) + LBound(strNames)) 
      temp = strNames(i) 
      strNames(i) = strNames(rnum) 
      strNames(rnum) = temp 
     Next i 


     For i = 0 To 9 
      MessageBox.Show(strNames(i)) 
     Next i 

    End Sub 
+1

不同之處在於'rnum'必須依賴'i')。請參閱[如何在VB中洗牌數組?](http://stackoverflow.com/q/23576469/11683)或[在vb.net中洗牌字符串數組](http://stackoverflow.com/q/29358857/11683)。 – GSerg

回答

2

For i = 0 To 18 
     strNames(i) = i 
    Next i 

被strNames的值設定爲一個數字。

取出,你似乎是洗牌陣列,以一種不可思議的,可能錯誤的方式(關鍵你似乎並沒有從數組選擇隨機名稱似乎工作

Dim strNames(18) As String 
    Dim frances, emma, piotr, jake, jess, jonah, john, flynn, will, nick As String 
    frances = "frances" 
    emma = "emma" 
    piotr = "piotr" 
    jake = "jake" 
    jess = "jess" 
    jonah = "jonah" 
    john = "john" 
    flynn = "flynn" 
    will = "will" 
    nick = "nick" 
    strNames(0) = frances 
    strNames(1) = emma 
    strNames(2) = piotr 
    strNames(3) = jake 
    strNames(4) = jess 
    strNames(5) = jonah 
    strNames(6) = john 
    strNames(7) = flynn 
    strNames(8) = will 
    strNames(9) = nick 


    Dim rnum As Integer 
    Dim temp As String 


    Randomize() 
    For i = 0 To 9 
     rnum = Int(Rnd() * (UBound(strNames) - LBound(strNames) + 1) + LBound(strNames)) 
     temp = strNames(i) 
     strNames(i) = strNames(rnum) 
     strNames(rnum) = temp 
    Next i 


    For i = 0 To 9 
     MessageBox.Show(strNames(i)) 
    Next i 
+0

非常感謝 – fox