生成k個不同的隨機數,從m到n,並輸出最大值的程式程式碼

ZeroWM發表於2013-06-09
Option Explicit

Dim i As Integer, j As Integer  '用於陣列的變數
Dim Temp As Integer             '儲存隨機數的容器
Dim Flag As Boolean             '判斷生成的數是廢掉還是儲存
Dim k As Integer                '生成的數的個數K
Dim m As Integer                '生成數的範圍的下界M
Dim n As Integer                '生成數的範圍的上界N
Dim max As Integer              '進行最大值判斷的變數

 Dim p As String

Private Sub Command1_Click()

'取值  生成的數的個數K、生成數的範圍的下界M、生成數的範圍的上界N

k = Val(Text1.Text)
n = Val(Text2.Text)
m = Val(Text3.Text)


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'生成k個從m-n範圍的不重複的隨機數

ReDim a(0 To k)         '定義一個陣列範圍從0到k

    Randomize

    For i = 0 To k

            Temp = Int(Rnd * (n - m + 1) + m)   '生成一個隨機數
            Flag = False                        'flag的預設初值是false
        
            For j = 0 To i - 1              '生成的新的數與前面生成的數比較,如果相等就廢掉這個數,如果不等就儲存 到a(i)
                If Temp = a(j) Then
                     i = i - 1
                     Flag = True
                     Exit For
                End If
            
            Next j
           
            If Flag = False Then
                    a(i) = Temp

                     If i = k Then 
                         Print a(i) & Chr(13) & Chr(10)
         Else
                         Print a(i); 
                     End If

             End If
        
     Next i
    
'‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
'大小的比較

    max = a(0)          '把產生的第一個數a(0)視為最大的數

    For i = 1 To k      '如果後面的數大於max則把這個數付給max
    
        If max < a(i) Then
        max = a(i)
        End If
        
    Next i
    

    Label1.Caption = Str(max)


End Sub

相關文章