135067980 发表于 2008-6-24 11:37:16

随机取数数“用过的再不取”?

比如,在01到10中随机取数字,怎样实现“用过的再不取”?

顽固不化 发表于 2008-6-24 12:22:09

$n=5 ;要取的总个数
$Bx="";显示用
dim $A;存放1-10个数
dim $B[$N+1];存放取出的数
for $i=1 to 10;放数进去
        $a[$i]=$i
Next
$x=10;使用数的个数
for $i=1 to $n
        $y=Random(1,$x,1)
        $B[$i]=$A[$y]
        for $j=$y to $x-1
                $A[$j]=$A[$j+1]
        Next
        $x=$x-1
Next
for $i=1 to $n
        $Bx=$BX&" "&$B[$i]
Next
MsgBox(0,"",$Bx)

pcbar 发表于 2008-6-24 17:13:53

帮楼上改一下
#include "array.au3"

$n = 5 ;要取的总个数
$Bx = "" ;显示用
Dim $A;存放1-10个数
For $i = 1 To 10 ;放数进去
        $A[$i] = $i
Next
For $i = 1 To $n
        $y = Random(1, UBound($A)-1, 1);此处经验证需改为UBound($A)-1,
        $Bx &=$A[$y]&" "
        _ArrayDelete($A, $y)
Next
MsgBox(0, "", $Bx)

[ 本帖最后由 pcbar 于 2008-6-30 15:41 编辑 ]

rho123 发表于 2008-6-25 09:55:09

:face (29): 看过了。不错

wind 发表于 2008-6-29 12:30:47

哇,好有用!
谢谢!

wolfxiong 发表于 2008-6-30 10:38:19

:face (25):   受教了

jhwl 发表于 2008-6-30 11:19:20

pcbar 的UBound($A)要减去1
#include "array.au3"

$n = 5 ;要取的总个数
$Bx = "" ;显示用
Dim $A;存放1-10个数
For $i = 1 To 10 ;放数进去
    $A[$i] = $i
Next
For $i = 1 To $n
    $y = Random(1, UBound($A)-1, 1)
    $Bx &=$A[$y]&" "
    _ArrayDelete($A, $y)
Next
MsgBox(0, "", $Bx)

pcbar 发表于 2008-6-30 15:39:58

原帖由 jhwl 于 2008-6-30 11:19 发表 http://www.autoitx.com/images/common/back.gif
pcbar 的UBound($A)要减去1
#include "array.au3"

$n = 5 ;要取的总个数
$Bx = "" ;显示用
Dim $A;存放1-10个数
For $i = 1 To 10 ;放数进去
    $A[$i] = $i
Next
For $i = 1 To $n
    $y =...
多谢指正

KEYFree2008 发表于 2008-11-16 21:53:28

有时会用到

ollydbg 发表于 2009-10-18 12:26:05

老大们很强啊,学习了
页: [1]
查看完整版本: 随机取数数“用过的再不取”?