Int(Rnd(1))是什么意思

大哥们哪位知道,Int(Rnd(1))是什么意思
最新回答
耳边情话

2025-06-27 12:10:54

Rnd(1)是产生一个
随机数
,这个随机数是大于0但小于1的一个纯小数,那么Int(Rnd(1))肯定=0了,因为Int 函数是返回小于Rnd(1)的整数,对于纯小数当然是0了。
追问
那如果Rnd(2)是产生2个随机数吗
追答
不是!
Rnd(X)中的X是随机函数的种子,一般这个种子是一个整数,例如0、5、8、20、200等等等等,但产生的随机数是一个,注意是一个大于0但小于1的一个纯小数,不会因为种子的不同而不同,在通常默认情况下,种子数应该是0。
如果需要产生一个某一个范围内的随机数,一般采用这样的格式:
产生的随机数 = Int((最大数-最小数) * Rnd + 最小数),这里的Rnd 可以认为是Rnd (0)
例如要产生一个50到100的随机数是:
产生的随机数 = Int((100 - 50) * Rnd + 50)
追问
你讲的‘’如果需要产生一个某一个范围内的随机数,一般采用这样的格式:。。。‘’
这些我懂, 但是好吧 ,我不明白种子的意思 还有你说的上面的Rnd 可以认为是Rnd (0),那可不可以认为Rnd 是Rnd (1),因为你不是说Rnd(1)是产生一个随机数,这个随机数是大于0但小于1的一个纯小数和Rnd (0)一样了。不好意思 这不太明白 可不可以讲一下 谢谢
追答
不要钻牛角尖了,Rnd (0)与Rnd (1)产生的随机数是一样的,产生大于0且小于1的一个纯小数,不因为括号内的数据不同而产生不同的随机数。
在大量程序中,为了区分,有意在括号内填写不同的数字,估计是为了区分以及编程人的可读性吧,再次说明!不是因为括号内的数据不同而产生不同的随机数。
你为什么非要钻这个牛角尖?
小昊昊

2025-06-27 10:52:01

他那个是int (rnd*(100-50+1)+50
想你想的,我骨头痛。

2025-06-27 11:42:50

Rnd 函数
返回一个包含随机数值的 Single。
语法
Rnd[(number)]
可选的 number 参数是 Single 或任何有效的数值表达式。
返回值
如果 number 的值是 Rnd 生成
小于 0 每次都使用 number 作为随机数种子得到的相同结果。
大于 0 序列中的下一个随机数。
等于 0 最近生成的数。
省略 序列中的下一个随机数。
说明
Rnd 函数返回小于 1 但大于或等于 0 的值。
number 的值决定了 Rnd 生成随机数的方式。
对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。
在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。

为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
追问
额 那个我不太明白VB中种子意思,还有
小于 0 每次都使用 number 作为随机数种子得到的相同结果。
大于 0 序列中的下一个随机数。
等于 0 最近生成的数。
省略 序列中的下一个随机数。
不好意思 可不可以不要太官方讲啊 不太理解
追答
这个问题还真不好说得怎么让人明白。你自己试一下下面的三段代码,自己体会吧:
Private Sub Command1_Click()
For i = 1 To 10
Print Int(100 * Rnd(-1));
Next i
Print
End Sub

Private Sub Command2_Click()
For i = 1 To 10
Print Int(100 * Rnd(0));
Next i
Print
End Sub

Private Sub Command3_Click()
For i = 1 To 10
Print Int(100 * Rnd(1));
Next i
Print
End Sub
追问
额  所以这三段代码结果有什么区别啊
追答
这三段的差别就在于Rnd(?),这样就可比较这个参数的意义的。一般我用的时候都是用省略,即同第三段同样的效果。
追问
那个我的意思是这三段最后输出的值有什么区别
追答
你自己运行一下看嘛!
小于 0 每次都使用 number 作为随机数种子得到的相同结果。 --由于number相同导致,随机数都相同。
大于 0 序列中的下一个随机数。----每次都不一样。
等于 0 最近生成的数。 ----每次都一样。
省略 序列中的下一个随机数。----每次都不一样。