乐心bonbon睡眠:VB随机的问题?

来源:百度文库 编辑:高校问答 时间:2024/05/07 04:18:22
把16张图放在16个PICTURE BOX里,随机的,每次都
不相同,求思路~~~
2楼那个等于没说,3楼那个理解很好,只是我不是很懂
Function CheckAndMake()
这个函数
我简化下:
就是生成1-16这16个数,随机放在数组a(16)中

其实这就是随机生成不重复的数字问题
您可以
Dim X '记录被选中的项
Function CheckAndMake()
A=随机生成0-15
If Instr(","&X&",",","&A&",")> Then
CheckAndMake= CheckAndMake()
Else
CheckAndMake=A
End If
End Function

Dim Pic(15)
Pic(0)="图片一地址"
Pic(1)="图片二地址"
.......

显示时
pic1.picture=Pic(CheckAndMake())
pic2.picture=Pic(CheckAndMake())

提供一种方法,你可以试试,我用过,有点投机!
首先把你的图片文件名改为1~16。例如:1.jpg,2.jpg,3.jpg.
然后利用随机函数rnd()生成1~16,用这个数作为文件名,然后在加载图片的时候,用生成的随机与(&)上文件扩展名。即可。懂了没有啊。
还有一个方法就是,把16个文件的路径存入一个字符串数组里。然后用随机函数,生成0~15的数字,作为数组下标来使用。这样也可以。

楼主说对了,就是生成16个随机数,但是是产生0-15的数,放在数组a(16)中,最后同将这个数组赋给图片数组.
用随机数产生器的时候要注意初始化,否则每次的随机数都是一样的。
Function CheckAndMake()
Randomize
dim a(15) as integer
for i=0 to 15
a(i)=16'先统一赋值以便后面辨别是否产生了同一个随机数
next i
for i=0 to 15
a(i)=rnd*16
for j=0 to 15
if a(i)=a(j) then a(i)=16
next j
do while a(i)=16 '防止产生重复随机数
a(i)=rnd*16
loop
picture1(i).picture=pic(a(i)).picture'将图片装载进去就OK
next i
end Function