guigui 发表于 2006-8-25 13:40:40

哈哈,不知道,可能可以用IF A=I THEN ***的语句实现

Still4 发表于 2006-8-25 16:43:05

不重复??
可以构造一个数组。
具体实施还是有点麻烦。。。
让我再想想。

ww2521 发表于 2006-8-25 17:07:36

有劳了各位。
我想过,用数组,然后随机出一个随机数,
之后把随机出来的规类,
用两个数组相比较
可是这样实行起来实在有些麻烦。
加入wqx随机出来的一直是随机过的,程序不就卡死了 吗?


或者想办法让wqx改变任意数组的顺序的算法也可以。

Still4 发表于 2006-8-25 17:14:11

我试过了。。。

10 DIM A(100)
15 FOR I=1 TO 100:A(I)=I:NEXT I
20 FOR I=100 TO 1 STEP -1
30 RAND=INT(RND(.1)*I)+1
40 SWAP A(I),A(RAND)
50 NEXT I

在朋友的启发下写出来了。。。。

ww2521 发表于 2006-8-25 18:56:04

能说说关键的地方吗?

Still4 发表于 2006-8-25 20:25:20

我都写出来了。。。自己看

ww2521 发表于 2006-8-26 09:56:35

可以告诉我rnd(.1) (0) (2)
有什么区别吗?
wqx中帮助说得么么忽忽的

Still4 发表于 2006-8-26 10:58:06

我不知道,但是一般我都使用.1,很多人用0。
看了帮助文件:RND(X):
如果X>0每次产生不同的随机数
IFX<0 产生序列的随机数
IFX=0输出上次产生的随机数(不懂)

lzjseeddd 发表于 2006-9-1 19:04:35

rand(0)是出现有规律的数,>0是随即的,<0是相同数

lzjseeddd 发表于 2006-9-1 19:16:15

其实算法不难,用两个数组,如果是单用做显示的话,一个就够了
首先给定一个范围的数组比如(1-10)令这个数组的全部元素为0
然后随即产生的数就在相应位子的地方改作1
算法如下:
10 M=1
20 FOR I=1 TO 10
30 A(I)=0
40 NEXT
50 C=INT(RND(1)*10)+1
60 IF A(C) THEN50 ELSE B(M)=C:A(C)=1:M=M+1
70 IF M=10 THEN END ELSE 50

Still4 发表于 2006-10-21 19:59:45

ls的....你的算法没我的简单
如果是要求到1000个数之内的随机不循环数列,
按理论要算1000*999/2个随机数
而我的只要1000个随机数

ww2521 发表于 2006-8-25 12:20:02

有关随机数列

帮帮帮帮哈

求助:

有人知道如何让 bas实现在指定范围内随机抽取不重复的数字的算发?


我想在语文攻略实现这个功能。


谢谢!

ww2521 发表于 2008-1-9 10:57:41

时隔多年,翻到老帖子了,哈哈
还是想谢谢still4前辈的帮忙啊
页: [1]
查看完整版本: 有关随机数列