回 帖 发 新 帖 刷新版面

主题:[原创]大过年的,大家都对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个回复)

11 楼

机灵点,拜托!

12 楼


[em3]很好,呵呵,指出我的错误了

13 楼

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


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



这是改进的。(这种方法不太好)[/quote]
h=i就不行了吗,你再想想,h=i本身也是一种可能,再说:当i量增加之后,之前的任意一个量都可能再次交换的

14 楼

[quote]不知道你需要的随机数范围是多少,以1-100为例吧
randomize timer
dim a(100)
for i=1 to 100
a(i)=int(rnd*100)+1
next i
end
[/quote]
你就没理解题意啊,不能重复的

15 楼

关注中~~~啦~啦~啦
我早就想问这问题了……我不会其它方法了,等高人指点

16 楼

这个方法是我想出来的,不过,我也是在等待新的方法

17 楼

moz和其他英雄们就没来过这里么,他们没什么好的建议???
谁有谁贴上啊,算是急用了,我在编个随机字典生成程序,在使用穷举呢,效率很低,谁给个好方法……

18 楼

呵呵,大侠忙呢,没空来看看

19 楼

dim a(100) 
for i=1 to 100 
    a(i)=i 
next 
for i=1 to 100     '交换次数可以改大些,次数越多,次序越乱
    swap a(rnd*99+1),a(rnd*99+1)
next

20 楼

moz:   你的方法基本算是套用俺的,交换部分换成了单个的函数,而且交换过程与循环量i无关,当然循环越多越好,可是我的交换是数组下标与i有关并逐个与随机的另一个数据交换的过程,所以循环一周足以。
呵呵,等待更好的方法

我来回复

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