回 帖 发 新 帖 刷新版面

主题:[原创]大过年的,大家都对QB兴趣不浓,给一个好的题目,都进来看看■■■■■■■■■■■■■

求助 怎么搞一个随机排列的数组  
各位大哥,偶初学,多帮帮忙 
比如把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个回复)

沙发

太衰了吧,没人理俺.......

板凳

不会啊[em10]

3 楼

先理解题目的意思,找相关的函数,所以这个题需要用:rnd,数组,for,……
大家都积极些,提出自己的想法!

came on,适当的都加分的
[em11]

4 楼

我会!后年再告诉你!

5 楼


好的,你学一年,然后,后年再给我一种你自己的程序,记得不能跟任何别人的一样啊.......[em9][em9][em3][em3]

6 楼

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 楼

同志们都不动脑筋

8 楼

[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 楼

还有问题,就是如果下标一样,那么就白交换了,最还加一句


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 楼

不知道你需要的随机数范围是多少,以1-100为例吧
randomize timer
dim a(100)
for i=1 to 100
a(i)=int(rnd*100)+1
next i
end

我来回复

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