vb 怎样随机数数组,vb产生随机数
网友回答
首先介绍一下随机数函数
函数名称Randomize 用法Randomize(x) 说明:初始化随机数发生器
函数名称rnd 用法rnd(x) 返回[0,1)之间的随机数
其中x可以省略
用rnd产生的数字是小数,必须另外设定格式,比如要0-99之间的随机整数,即
dim s as integer
s=rnd()*100
就行了
如果需要多次,大量产生随机数(对随机数要求高一些)就在rnd()语句前面一行插入randomize(x)
如果要对一个一维数组(比如上界为5)赋值:
.........
dim shuzu(5) as integer, i as short
for i=0 to 5
a(i)=rnd()
next
.........
如果需要多维数组利用循环的嵌套就可以了
网友回答
我理解为1-50的数字中,随机取8个
需要两个控件text1和mand1
代码如下:
Option Explicit
Dim i, j, k
Dim s(8)
Dim cf As Boolean
Private Sub Command1_Click()
Text1.Text = ""
i = 1
Do While i <= 8 '第一层循环,用于取8个数
cf = False '是否取到了重复的数
Randomize
k = Int(Rnd() * 50) + 1 '获取随机数
For j = 1 To i '第二层循环,判断是否取到的数字发生了重复
If k = s(j) Then '当发生重复的时候标记cf变量
cf = True
Exit For
End If
Next
If cf = False Then '如果取得数字没有重复,进行赋值,并显示在text1文本框
Text1.Text = Text1.Text & k & Chr(13) & Chr(10)
s(i) = k
i = i + 1 '继续取下一个数字,直到i=8
End If
Loop
Printer.FontSize = 30 '打印字体大小
Printer.Print Text1.Text '打印文本框
Printer.EndDoc '输出打印
End Sub
数字8代表要取多少个,数字50代表总共有多少数字,自己修改就行了
当随机数恰好等于50.00000的时候会出错,这个情况大约有10万分之一的可能性
可以将If k = s(j) Then改成If k = s(j) or k=51 Then来排除
要把50个数字改成50个名字
只要在form_load的时候做一个数组
dim name(50)
name(1)="张三"
name(2)="李四"
…………
然后将代码部分的k改成name(k) ,数组s(j) s(i)也要改成name(j) name(i)
for i=1 to 8
Printer.Print name(i)
next
这样打出来的是姓名
打印格式自己设定