vb产生两个数之间的随机数闭区间

我想知道怎么vb中可不可以产生两个数字之间的随机数,注意,是随机数字,包括小数,但不是只有整数,不是int(rnd*(b+a+1)+a)那个,比如产生1和2之间的随机数,或者5和10之间的随机数字,比如是5.668984等。
有一个想法,也不确定是否可行,我想是不是在产生的区间,不如要产生a,b之间的随机数(包括a,b这两个整数),那么可否用其他两个区间的平均值来表示呢?比如是要产生3为所求区间的左端点,那么可以用包含2.1和3.9这两个数的两个区间平均值来表示。所求a和b,那么假设有区间c,d以及区间e,f,让c+e=2a,d+f=2b?是不是可以通过先随便确定正整数c,e的值来求出d,f的值呢?
以上有点错乱,请别介意,请高手来看下,小弟不胜感激!

1、设置随机产生[n,m]之间的随机数(m>n),最小的随机数是n,然后在n的基础上加上m-n的差值内的随机数就可以了;
2、随机数代码是int(rnd*(m-n))+n
3、产生两个数之间的随机数闭区间示例(以产生一个[10,90]之间的随机数为例):

Private Sub Command1_Click()
Dim n As Integer
Randomize
n = Int(Rnd * 90) + 10
Print n;
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-03

说实在的,你的第二段话我没怎么看明白

我就按照标题帮助你一下吧,你想要一个有小数的随机数区间,其实并不难,只需要在你原来的代码上稍作改动就行,我们以5~10举例吧,如果你需要得到5~10之间省略到6位小数的随机数的话,代码如下:

本回答被提问者采纳
第2个回答  2014-01-07
随机函数Rnd()会产生0到1之间的一个单精度的小数(这个数字不包括0和1)。因此,如果在精度上没有要求,可以简单的通过一个公式将其放大到任何一个你需要的区间内。我们假设你的区间是(a, b),则公式是: r = Rnd()*(b-a)+b。但是这个是开区间的,两个端点不会被取到。

对于闭区间的问题,恐怕需要考虑进一步离散化这个随机取值。比如说,考虑你的区间内保留几位小数,我们假设是n,那么随机数可以做成: r = Int(Rnd()*((10^n)*(b-a)+1))/(10.0^n) + b。但是,这个n的取值不能太大,如果超过单精度的分辨率就失去意义了。一般4以下都应该没啥大问题。
第3个回答  2014-01-07

rnd*(b-a)+a

相似回答