回 帖 发 新 帖 刷新版面

主题:随机产生10个30~80的整数,怎么写?

同上。
另外,如果要求“包含两端”,和标题的又有什么区别?

回复列表 (共20个回复)

沙发


for i = 1 to 10
    a(i)= int (rnd*50+30)
next i
 包括30 和50!

板凳

不会出现80的,
应该是=int(rnd*51)+30

3 楼

0 <= RND < 1


0 <= b * RND < b
a <= a + b * RND < a + b

0 <= INT(b * RND) <= b - 1
a <= a + INT(b * RND) <= a + b - 1


0 <= b * RND + 1 < b + 1
a <= a + b * RND + 1 < a + b + 1

0 <= INT(b * RND) + 1 <= b
a <= a + INT(b * RND) + 1 <= a + b

4 楼

最后四行有点问题。

5 楼

请问如何产生一个包含两端的随机?(不要求整数)

6 楼

是的啦!
  没加1,

7 楼

请问如何产生一个包含两端的随机?(不要求整数)

随机数本身只有一边,另一边是无限趋向接近而不等的。
0<= rnd < 1
如何使它变成两端等值呢(好像是叫做开区间是不是?)
想一想这个值  abs( 0.5 - rnd )

8 楼

晕,我曾想过这个算式。它的解可以产生一个 0 至 0.5 且包含两端的随机数。
但我发现不好用。
我本想研究一个能产生一个 0 至 1 且包含两端的算式,再用这个算式代替rud做随机处理的,如 2*abs( 0.5 - rnd ) ,但发现它只能产生偶数,所以放弃了。

9 楼

不好用?偶数?
不是偶数,只是精度降低了一半。
这很正常,只是牺牲一点精度而已,对你的计算一点影响都没有。

你认为只有0.5782222,而缺少0.5782221这个数会有什么不妥?
如果做到整数那就更没问题了。

10 楼

我说的偶数是我想的 2*ABS( 0.5 - RND ) 这个算式
不乘2时是有奇数的,这我知道,但用起来怎么求指定范围的随机数呀

SRND = ABS( 0.5 - RND )

A = SRND * (最大值-最小值) [color=FF0000]*2[/color] + 最小值
难道要乘2吗?这样不是偶数吗?整个算式A的值随最小值奇偶。

我终于想到一个办法  INT(RND*x+1)/(RND+x)  'x值越大越精细

SRND = INT(RND * (32767 + 1)) / (RND + 32767)

A = SRND * (最大值-最小值) + 最小值

SRUD为改良随机数,这时A的奇偶将无法确定

我来回复

您尚未登录,请登录后再回复。点此登录或注册