请教:用RND()函数,每次都要得到一个0~23的整数,怎么办?RND()函数每次的结果都不同,怎么写?

imur 2003-12-01 01:27:54
请教请教!
...全文
530 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
guochj624 2003-12-01
  • 打赏
  • 举报
回复
Randomize只运行一次就行了,用不着每次都调用。
northwolves 2003-12-01
  • 打赏
  • 举报
回复
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 Sub
boydgmx 2003-12-01
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim i As Integer

For i = 1 To 10
Randomize
Debug.Print Fix(Rnd() * 24)
Next

End Sub
guochj624 2003-12-01
  • 打赏
  • 举报
回复
在程序加载时执行Randomize语句,然后再用Rnd()函数产生随机数。

Private Sub Form_Load()
Randomize

……

End Sub


海牛 2003-12-01
  • 打赏
  • 举报
回复
说简单一点:Randomize (Timer)就是根据Timer的值初始化一个随机数序列
trite 2003-12-01
  • 打赏
  • 举报
回复
同意 eports(飘零风)
imur 2003-12-01
  • 打赏
  • 举报
回复
谢谢大侠的答复!
那么,要想RND()函数每次的结果都不同,怎么写?

谢谢先!
脆皮大雪糕 2003-12-01
  • 打赏
  • 举报
回复
标准回答(msdn节选):

Rnd 函数返回小于 1 但大于或等于 0 的值。

对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。

在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。

为了生成某个范围内的随机整数,可使用以下公式:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。

注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。
Maconel 2003-12-01
  • 打赏
  • 举报
回复
用时间函数time取得当前的时间,然后得到当前的秒,这个秒是完全随机的,再用这个秒来使用随机函数,就可以得到不同的值了
imur 2003-12-01
  • 打赏
  • 举报
回复
谢谢各位高人的答复!
请教:Randomize的语法是Randomize([number]),请问:那个参数是干什么的?

谢谢先!
飘零风 2003-12-01
  • 打赏
  • 举报
回复
用 int(rnd*24) 就可以产生0 - 23 的随机整数了。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧