请教:用RND()函数,每次都要得到一个0~23的整数,怎么办?RND()函数每次的结果都不同,怎么写?
请教请教! 问题点数:0、回复次数:11Top
1 楼eports(飘零风)回复于 2003-12-01 02:01:27 得分 0
用 int(rnd*24) 就可以产生0 - 23 的随机整数了。Top
2 楼imur()回复于 2003-12-01 03:22:23 得分 0
谢谢大侠的答复!
那么,要想RND()函数每次的结果都不同,怎么写?
谢谢先!Top
3 楼guochj624(伤感男孩)回复于 2003-12-01 07:22:47 得分 0
在程序加载时执行Randomize语句,然后再用Rnd()函数产生随机数。
Private Sub Form_Load()
Randomize
……
End Sub
Top
4 楼boydgmx(授人以鱼不如授人以渔(baidu&google))回复于 2003-12-01 08:14:01 得分 0
Private Sub Command1_Click()
Dim i As Integer
For i = 1 To 10
Randomize
Debug.Print Fix(Rnd() * 24)
Next
End Sub
Top
5 楼northwolves(狼行天下)回复于 2003-12-01 09:09:45 得分 0
Private Sub Command1_Click()
getrnd 20
End Sub
Sub getrnd(ByVal m As Integer) 'get m rnd number between 0-24
Dim x As New Collection, temp As Integer
For i = 0 To 24
x.Add i
Next
Randomize
For i = 1 To m
temp = Int(Rnd * x.Count + 1)
Debug.Print x(temp)
x.Remove temp
Next
End SubTop
6 楼guochj624(伤感男孩)回复于 2003-12-01 09:24:50 得分 0
Randomize只运行一次就行了,用不着每次都调用。Top
7 楼imur()回复于 2003-12-01 14:03:06 得分 0
谢谢各位高人的答复!
请教:Randomize的语法是Randomize([number]),请问:那个参数是干什么的?
谢谢先!Top
8 楼Maconel(Maconel)回复于 2003-12-01 15:05:30 得分 0
用时间函数time取得当前的时间,然后得到当前的秒,这个秒是完全随机的,再用这个秒来使用随机函数,就可以得到不同的值了Top
9 楼chewinggum(口香糖·个人二五计划第一年)回复于 2003-12-01 15:15:22 得分 0
标准回答(msdn节选):
Rnd 函数返回小于 1 但大于或等于 0 的值。
对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。
在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。
为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。
注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。
Top
10 楼trite(追风少年)回复于 2003-12-01 15:54:02 得分 0
同意 eports(飘零风)Top
11 楼Rick110AAA(海牛猪猪 And HerosⅢ之比蒙)回复于 2003-12-01 16:16:36 得分 0
说简单一点:Randomize (Timer)就是根据Timer的值初始化一个随机数序列Top




