关于用Rnd函数取值的问题,请高人指点下

如何用Rnd函数取值(100,200)、[100,200]、(100,200]、[100、200)
谢谢了。

做好这类题目的关键是理解 rnd 函数的取值范围:

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

想清楚了这点,写代码就容易多了,否则只能死记硬背,还容易记错

(下限,上限) :Int(Rnd() * (上限 - 下限 - 1) + 下限 + 1)
[下限,上限] :Int(Rnd() * (上限 - 下限 + 1) + 下限)
(下限,上限] :Int(Rnd() * (上限 - 下限) + 下限 + 1)
[下限,上限) :Int(Rnd() * (上限 - 下限) + 下限)

即:

(100,200) :Int(Rnd() * 99 + 101)
[100,200] :Int(Rnd() * 101 + 100)
(100,200] :Int(Rnd() * 100 + 101)
[100,200) :Int(Rnd() * 100 + 100)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-20
rnd 取某一区间 等于 rnd*(上限-下限+1)+下限 这是包含上下限
如果不包含上限 就上限-下限+1 减一 如果不包含下限 就)+下限 这里加一
告诉你规则 比给你答案来的强 你可以用round函数 或者format来取带小数点的
第2个回答  2009-03-20
(100,200)、[100,200]、(100,200]、[100、200)的数如果取整数可以做到,如果不限制整数,就不能做到。取整数的写法:
(100,200) :int(rnd()*99+101)
[100,200] :int(rnd()*102+100)
(100,200] :int(rnd()*100+101)
[100、200) :int(rnd()*100+100)
第3个回答  2009-03-20
rnd*99+101
rnd*102+100
rnd*100+101
rnd*100+100
不加int就是精确到小数点后4位。。