vb 随机数问题

关于VB随机数,比如我想随机出100个1-20的数,但随机出来的数值中,数越小,比率也会越少,这个怎么解决?请高手解答下,谢谢!

这个简单,先设置一个几率范围再拿随机数进行比较,比如1的范围就是1,2的范围就是2到3,3的范围就是4到6,随机数的范围是1到6然后就对生成的100随机数进行判断在哪个范围内就输出哪个,比随机数是5就输出3,就这样3的数字最大范围就最大几得到随机数在3的范围的几率也最大,以次类推可以推到20为止,随机数的范围是1到20范围的最大值!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-07
VB 随机数频率控制

'添加 Command1

'0-59为小数, 60以上为大数
'i 是要运行几次
'jj 是得到的随机数
'kk 是控制每10个数则换行显示
'minnum 是统计小数出现的次数
'getrnd 本次得到的随机数是否有效

Dim countrnd%, i%, jj%, kk%, minnum%, getrnd As Boolean

Private Sub Form_Load()
Me.AutoRedraw = True
End Sub

Private Sub Command1_Click()
Randomize
getrnd = False
countrnd = 0: kk = 0: minnum = 0
Me.Cls
For i = 1 To 100
Do
jj = Int(Rnd * 100)
If jj >= 60 Then
Me.ForeColor = QBColor(0)
Print jj;
kk = kk + 1
If kk Mod 10 = 0 Then Print
Exit Do
End If
If getrnd Then
Me.ForeColor = QBColor(12)
Print jj;
kk = kk + 1
minnum = minnum + 1
If kk Mod 10 = 0 Then Print
getrnd = False
countrnd = 0
Exit Do
End If
Loop
countrnd = countrnd + 1
If countrnd > 6 Then getrnd = True '使用6来控制出现小数的频率,数字越大则出现频率越少
Next i
MsgBox "小数出现 " & CStr(minnum) & " 次"
End Sub
第2个回答  2012-07-07
随机出来的怎么会?除非是你的随机种子没写好~估计你的程序每

次随机出来的数字都是一样的,比如第一次运行随即数字:18 15 14 2 3 7 第二次还是
18 15 14 2 3 7

你试试这两行语言
Randomize
for u =1 to 100
a=Int(Rnd* 19)+ 1
next u

应该不会出现你说的问题了本回答被网友采纳
相似回答