求N个1-M之间的顺序随机数(vb 或 asp通用)

来源:互联网 发布:程序员app 编辑:程序博客网 时间:2024/06/05 09:36
Function getRnd(i As IntegerAs Integer '取1-i之间的随机数一个
  Randomize
  getRnd 
= Int(Rnd() * i + 1)
End Function

Function getAllRnd(Counter As Integer, jishu As IntegerAs Integer()'取Counter个1-jishu之间的随机数
  If (Counter > jishu) Then
    
MsgBox "数字个数不能大于基数"
    
Exit Function
  
End If
  
ReDim arr(Counter) As Integer
  i 
= 0
  
Do While i < Counter
    arr(i 
+ 1= getRnd(jishu)
    found 
= False
    
For x = 1 To i
      
If arr(x) = arr(i + 1Then
        found 
= True
        
Exit For
      
End If
    
Next
    
If Not found Then
      i 
= i + 1
    
End If
  
Loop
  
  getAllRnd 
= arr
End Function

Sub OrderNumber(arr) '从小到大排序
  For i = 1 To UBound(arr)
    
For j = i + 1 To UBound(arr)
      
If arr(i) > arr(j) Then
        x 
= arr(i)
        arr(i) 
= arr(j)
        arr(j) 
= x
      
End If
    
Next
  
Next
End Sub

Private Sub Command1_Click()
  arr 
= getAllRnd(510'取5个1-10之间的随机数
  OrderNumber arr '排序
  For i = 1 To UBound(arr)
    
Print arr(i)
  
Next
End Sub
 
原创粉丝点击