回 帖 发 新 帖 刷新版面

主题:紧急求助 "这个QBASIC题怎么解??"

随机产生50个[300,800]间的随机数,并按从小到大的顺序,以每行5个数的形式输出.

回复列表 (共20个回复)

沙发

cls
k%=300
for i=1 to 50
    k%=rnd*(300+i*10-k%)+k%
    print k%;
    if i mod 5=0 then print
next

板凳

楼上的,你的程序还可以在简单一点,print k%;这句后面的分号改成逗号。
把if i mod 5=0 then print这一句去掉。

3 楼

这个程序没有真正实现功能的

4 楼

moz你的那个程序编的没有实现随机的功能,你的这个产生的数是固定的。不过受了你的启发我觉得应该是这样的:
     randomize timer
     for i=1 to 50
       x=int(rad*501)+300
       print x;
       if i mod 5=0 then print
     next i
     end

5 楼

楼主,你启发后好象倒没有随机且没排序哦(rnd不是rad 开玩笑[em2])

moz你的排序太精彩
产生50个随机数倒不难,我本想看看排序
你的排序太另类了,我服了

6 楼

嗯,对的,如果想每次运行时结果不同,就得在前面加上一行
randomize timer
我的程序里的确没有排序的功能,但我是把它们平均分布了50个数里面去了,生成的结果已经实现了从小到大的顺序了。对于这些没有明确功能的要求,用简单的方法来实现并不为过吧。

7 楼

其实他这个答案并不是最好的程序
这个程序出的随即数并不是 300到800之间出现50个随即数而是
在 300到800之间每隔10个数出现一个随即数了

8 楼

是不是 应该先出随即数  然后对 随即数  进行排序呢 ?

9 楼

你有运行过吗?
你有看过结果?
你怎么知道它是每隔10个数就出现一个随机数的?
我本来是用 rnd*(800-k%)+k% 的
后来为了避免一下子就把所有的数都挤到末段数去了,
就加了一个限制,就是每一个数都不大于当前限制段
就是第一个数不能大于310
    第二个数不能大于320
    第50个数不能大于800
但不一定就是平均分布的,如果平均分布的就得用 rnd*10+290+i*10 了

10 楼

我说的意思是你程序输出来的数是第一个数在300-310谁机输出第2个数是310-320谁机输出第3个数320-330之间输出这样就对这50个数产生了多余的限制也就不是真正的在300-800产生的“谁机”数

我来回复

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