VB中的乱序函数

将C++的函数稍改了一下,以适合在VB里用。

 

' 从1-max中随机选择n个,放在数组arrT()最前面
Public   Sub  RndSel(max  As   Integer , ByVal N  As   Integer , arrT()  As   Integer )
    
Dim  p  As   Integer
    
Dim  i  As   Integer
    
Dim  tmp  As   Integer
    
    
If  N  >  max  Then  N  =  max
    
ReDim  arrT(max  -   1 )
    
For  i  =   0   To  max  -   1
        arrT(i) 
=  i  +   1
    
Next
    
For  i  =   0   To  N  -   1
        p 
=   Int (GetRnd( CSng (i),  CSng (max)))
        tmp 
=  arrT(p)
        arrT(p) 
=  arrT(i)
        arrT(i) 
=  tmp
    
Next
End Sub

' 生成区间内的随机值,小数点后4位
Public   Function  GetRnd(min  As   Single , max  As   Single As   Single
    Static blnInit 
As   Boolean
    
If   Not  blnInit  Then
        
Randomize   Timer
        blnInit 
=   True
    
End   If
    GetRnd 
=   Rnd   *  (max  -  min)  +  min
End Function

 

用RndSel生成的一串随机数,放在一个数组里,最前面N个是已经随机抽取的。

举个例子:

 

     Dim  arr()  As   Integer
    
Dim  i  As   Integer
    
Dim  j  As   Integer
    
Dim  s  As   String
    
        Text1.Text 
=   ""
    
For  j  =   1   To   20
        
Call  RndSel( 37 7 , arr())
        s 
=   ""
        
For  i  =   0   To   6
            
If  s  <>   ""   Then  s  =  s  &   " , "
            s 
=  s  &  Format( CStr (arr(i)),  " @@ " )
        
Next
        Text1.Text 
=  Text1.Text  &  vbCrLf  &  s
    
Next

Call RndSel(37, 7, arr()) 这句就是从1-37中选择7个,放到arr()中,arr(0)-arr(6)就是这7个数

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值