主题:紧急求助 "这个QBASIC题怎么解??"
艳阳
[专家分:0] 发布于 2006-01-04 19:30:00
随机产生50个[300,800]间的随机数,并按从小到大的顺序,以每行5个数的形式输出.
回复列表 (共20个回复)
沙发
moz [专家分:37620] 发布于 2006-01-04 23:15:00
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
板凳
qbqb [专家分:400] 发布于 2006-01-05 19:38:00
楼上的,你的程序还可以在简单一点,print k%;这句后面的分号改成逗号。
把if i mod 5=0 then print这一句去掉。
3 楼
艳阳 [专家分:0] 发布于 2006-01-09 18:31:00
这个程序没有真正实现功能的
4 楼
艳阳 [专家分:0] 发布于 2006-01-09 19:11:00
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 楼
咖啡猪 [专家分:290] 发布于 2006-01-10 02:40:00
楼主,你启发后好象倒没有随机且没排序哦(rnd不是rad 开玩笑[em2])
moz你的排序太精彩
产生50个随机数倒不难,我本想看看排序
你的排序太另类了,我服了
6 楼
moz [专家分:37620] 发布于 2006-01-10 11:17:00
嗯,对的,如果想每次运行时结果不同,就得在前面加上一行
randomize timer
我的程序里的确没有排序的功能,但我是把它们平均分布了50个数里面去了,生成的结果已经实现了从小到大的顺序了。对于这些没有明确功能的要求,用简单的方法来实现并不为过吧。
7 楼
竹本无心 [专家分:20] 发布于 2006-01-10 21:11:00
其实他这个答案并不是最好的程序
这个程序出的随即数并不是 300到800之间出现50个随即数而是
在 300到800之间每隔10个数出现一个随即数了
8 楼
竹本无心 [专家分:20] 发布于 2006-01-10 21:12:00
是不是 应该先出随即数 然后对 随即数 进行排序呢 ?
9 楼
moz [专家分:37620] 发布于 2006-01-11 12:56:00
你有运行过吗?
你有看过结果?
你怎么知道它是每隔10个数就出现一个随机数的?
我本来是用 rnd*(800-k%)+k% 的
后来为了避免一下子就把所有的数都挤到末段数去了,
就加了一个限制,就是每一个数都不大于当前限制段
就是第一个数不能大于310
第二个数不能大于320
第50个数不能大于800
但不一定就是平均分布的,如果平均分布的就得用 rnd*10+290+i*10 了
10 楼
竹本无心 [专家分:20] 发布于 2006-01-11 17:59:00
我说的意思是你程序输出来的数是第一个数在300-310谁机输出第2个数是310-320谁机输出第3个数320-330之间输出这样就对这50个数产生了多余的限制也就不是真正的在300-800产生的“谁机”数
我来回复