主题:[原创]大过年的,大家都对QB兴趣不浓,给一个好的题目,都进来看看■■■■■■■■■■■■■
wjl8719
[专家分:190] 发布于 2009-01-23 00:23:00
求助 怎么搞一个随机排列的数组
各位大哥,偶初学,多帮帮忙
比如把1、2、3、……100随机乱排成 45、7、8、……再依次放进数组A(100)里面
我现在就只会用循环比如(只是思路,语法不一定对)
……
40 FOR I=1 TO 100
50 A(I)=INT(RND(1)*100)
60 FOR X=1 TO I-1
70 IF A(I)=A(X) THEN GOTO 50
80 NEXT
90 NEXT
……
要是数字很多的话就要循环很久了
有没有更好的方法呢
------------------------------------------------------------------------------
分割线以上是我复制过来的,不用上面那种方法,大家思考一 下,看以大家的智慧能得几种方法
我是思考半天才想出一种来,等过完年我把我的再发出来.
多多亦善
[em3][em3][em3][em3]
回复列表 (共40个回复)
沙发
wjl8719 [专家分:190] 发布于 2009-01-23 20:43:00
太衰了吧,没人理俺.......
3 楼
wjl8719 [专家分:190] 发布于 2009-01-24 14:53:00
先理解题目的意思,找相关的函数,所以这个题需要用:rnd,数组,for,……
大家都积极些,提出自己的想法!
came on,适当的都加分的
[em11]
4 楼
dfljz [专家分:10] 发布于 2009-01-24 17:42:00
我会!后年再告诉你!
5 楼
wjl8719 [专家分:190] 发布于 2009-01-24 19:41:00
好的,你学一年,然后,后年再给我一种你自己的程序,记得不能跟任何别人的一样啊.......[em9][em9][em3][em3]
6 楼
wjl8719 [专家分:190] 发布于 2009-01-26 00:34:00
dim a(100)
for i=1 to 100
a(i)=i
next
for i=1 to 100
o=a(i)
h=int(rnd(100))
a(i)=a(h)
a(h)=o
next
随机选个数交换下,每一个都至少有一次交换的机会,所以就成了
想必还有别的方法,大家开动脑筋啊,大过年的,积极些
7 楼
wjl8719 [专家分:190] 发布于 2009-02-04 21:44:00
同志们都不动脑筋
8 楼
天天和和 [专家分:1420] 发布于 2009-02-07 13:09:00
[quote]dim a(100)
for i=1 to 100
a(i)=i
next
for i=1 to 100
o=a(i)
h=int(rnd(100))
a(i)=a(h)
a(h)=o
next
随机选个数交换下,每一个都至少有一次交换的机会,所以就成了
想必还有别的方法,大家开动脑筋啊,大过年的,积极些[/quote]
有问题 h=int(rnd(100)) 应改成 h=int(rnd*100+1)
9 楼
天天和和 [专家分:1420] 发布于 2009-02-07 13:12:00
还有问题,就是如果下标一样,那么就白交换了,最还加一句
dim a(100)
for i=1 to 100
a(i)=i
next i
for i=1 to 100
o=a(i)
10 h=int(rnd*100+1)
if h=i then 10
a(i)=a(h)
a(h)=o
next i
这是改进的。(这种方法不太好)
10 楼
userlist [专家分:10] 发布于 2009-02-09 23:29:00
不知道你需要的随机数范围是多少,以1-100为例吧
randomize timer
dim a(100)
for i=1 to 100
a(i)=int(rnd*100)+1
next i
end
我来回复