怎样在VB5里得出随机数?

kentg 2000-09-13 10:35:00
怎样在VB5里得出随机数?
...全文
182 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt642 2001-05-31
  • 打赏
  • 举报
回复
42821关注!
xish 2000-09-15
  • 打赏
  • 举报
回复
dim x as integer

randomize

x=int(rnd*n)+m

n:你要取的最大数-你要取的最小数
:你要取的最小数
gameboy999 2000-09-15
  • 打赏
  • 举报
回复
我倒~~~~~~~,不过这样的讨论我喜欢:))
oreh 2000-09-15
  • 打赏
  • 举报
回复
shines, ok!
stanely 2000-09-14
  • 打赏
  • 举报
回复
错了,是Rnd(x)
stanely 2000-09-14
  • 打赏
  • 举报
回复
刚才粘错了,http://www.csdn.net/softs/softview.asp?ID=2309
是我搞的"vb6运行库",要看"猜数字"可以到:http://www.csdn.net/softs/softview.asp?ID=2527
stanely 2000-09-14
  • 打赏
  • 举报
回复
vb5和vb6在这里没有什麽区别,这种方法通用.
stanely 2000-09-14
  • 打赏
  • 举报
回复
可以用Int(x),这个函数可以得到一个0--1之间的单精度随机数,但是这种方法还不是真正的随机,因为这个有一定的算法,每次得到的第一个"随机数"必然是7,不信你就试试.我有一个方法可以得到真正的随机数:
1.建立一个Timer1,它的Interval属性尽量设得小一些,不过太小系统不能识别,好像最小是1/18秒吧...,姑且设成100,即1/10秒执行一次Timer1的事件.

2.建立一个Label1,让其Caption属性接受Timer1每次执行代码时提取的系统时间,并把它的Visible属性变为False,否则就露馅了,呵呵...^^!

3.在Timer1代码中写入:
Private Sub Timer1_Timer()
Label1.Caption=Time$
End Sub

4.自定义一个事件Rndit:
Private Sub Rndit()

For i=0 to Val(Right$(Label1, 1)) + a + Val(Right$(Label1, 3)) + b +Val (Right$(Label1, 6)) + c +Val(Right$(Label1, 4)) + d '其中的a,b,c,d 的具体值可以自己指定,要看机器运行速度而定.'
result = Rnd(x) '其中的自定义变量result要在窗体范围内或全局范围声明,这样,result的值就是要得到的真正随机变量.'
Next i

End Sub

5.在需要的时候可以调用自定义事件Rndit,这样就能得到想要的随机变量"result".

关于这种方法我曾经在编写"猜数字"中使用过,只是稍微要变通些,有兴趣的话可以看看我写的"猜数字",就在http://www.csdn.net/softs/softview.asp?ID=2309可以下载:)

shines77 2000-09-14
  • 打赏
  • 举报
回复
stanely:
我也是在校大学生,我不高 才168cm,Randomize是VB的语句,你说快不快,汇编级的。
Randomize是很通用的,在 VC++,Delphi,BCB都是一样的,都是用来种随机种子的,有什么快不快,倒是你的方法要考虑以下快不快,值不值得,呵呵:)

要种随机种子用系统的不好嘛:)系统不不你快嘛,况且用一个Timer本身就是很占资源的。
stanely 2000-09-14
  • 打赏
  • 举报
回复
shines:
我可从来没有自称是高手呀!我的vb是自学的,现在我只是在校大学生,当然不能和你高人比喽,你说的那个看上去到是挺好的,就是不知道速度怎样呀....
shines77 2000-09-14
  • 打赏
  • 举报
回复
stanely的猜数字做得不错。
shines77 2000-09-14
  • 打赏
  • 举报
回复
下面附上 VB 关于 Randomize 函数的帮助,stanely: 多看看啊:)


初始化随机数生成器。

语法

Randomize [number]

可选的 number 参数是 Variant 或任何有效的数值表达式。

说明

Randomize 用 number 将 Rnd 函数的随机数生成器初始化,该随机数生成器给 number 一个新的种子值。如果省略 number,则用系统计时器返回的值作为新的种子值。

如果没有使用 Randomize,则(无参数的)Rnd 函数使用第一次调用 Rnd 函数的种子值。

注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。
shines77 2000-09-14
  • 打赏
  • 举报
回复
stanely: 你还是高手呢??

哪用如此麻烦!!VB有种随机种子的函数,就是Randomize

举例说明:

'种随机种子,该函数根据时间Timer改变而改变
Randomize

Dim RndNum As Long
RngNum = Int(Rnd * 10) + 1 '取得一个1-10的随机整数

不信,你试试,会不会每次执行都是一样的结果。

呵呵:))

7,762

社区成员

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

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