找回密码
 加入
搜索
查看: 191|回复: 8

[AU3基础] 打乱数字顺序并读取?

[复制链接]
发表于 2023-12-8 17:47:56 | 显示全部楼层 |阅读模式
比如我要把1-50的数字打乱,然后进行读取,应该怎么做呢?
如果我随机读取是可以读取到其中一个数字,但是我需要读取50次,后续的读取中就不能再有这个数字了
For $i = 1 To 50 Step +1
$suiji = Random (1,50,1)
msgbox (4096,'shuzi',$suiji)
Next
这样的思路不行,大神有好的办法没有?
发表于 2023-12-8 19:12:34 | 显示全部楼层
#include <array.au3>
Local $aAry[50]
For $i = 0 To UBound($aAry) - 1
        $aAry[$i] = $i + 1
Next
_ArrayShuffle($aAry)
_ArrayDisplay($aAry)



 楼主| 发表于 2023-12-8 19:27:17 | 显示全部楼层
数组重组~谢谢大佬,有思路了,我去试试
发表于 2023-12-8 20:05:51 | 显示全部楼层
我觉得撸主可以考虑这个思路:
1.将所有数字组成一个数组
2.随机提取其中的一个数值
3.从数组中删除这个值
4.重复以上操作
#include <Array.au3>

Dim $NumArray[5] = [0, 1, 2, 4, 8]
Do
        $iNum = Random(1, UBound($NumArray), 1)
        MsgBox(0, "", "读取到的值:" & $NumArray[$iNum] & @CRLF & @CRLF & "当前数组:" & _ArrayToString($NumArray), 5)
        _ArrayDelete($NumArray, $iNum)
Until UBound($NumArray) = 0
测试发现偶尔会报错,不知道啥原因,水平有限,请大佬来改吧



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2023-12-8 20:13:14 | 显示全部楼层
邪恶海盗 发表于 2023-12-8 20:05
我觉得撸主可以考虑这个思路:
1.将所有数字组成一个数组
2.随机提取其中的一个数值

找到原因了,数组索引是从0开始的,所以第5行要改$iNum = Random(0, UBound($NumArray)-1, 1),也就是说索引号是从0-4而不是1-5...
发表于 2023-12-8 20:21:31 | 显示全部楼层
#include <Array.au3>

Dim $NumArray[5] = ['A8','B6','A2','C18','b17']
Do
        $iNum = Random(0, UBound($NumArray)-1, 1)
        MsgBox(0, "", '索引号:'& $iNum & @CRLF & "读取到的值:" & $NumArray[$iNum] & @CRLF & @CRLF & "当前数组:" & _ArrayToString($NumArray) &@CRLF & '元素总数:' & UBound($NumArray))
        _ArrayDelete($NumArray, $iNum)
Until UBound($NumArray) = 0
现在应该对了


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2023-12-8 21:27:32 | 显示全部楼层
谢谢邪恶海盗的思路,这个应当算是排除法,这个以后能用到,先收藏~谢谢啦
发表于 2023-12-10 22:02:48 | 显示全部楼层
咋没大佬来点评下我的屎山代码呢???
发表于 2023-12-11 21:28:30 | 显示全部楼层
使用数组元素交换函数也可以实现这种效果。
#include <array.au3>
Local $Array[50]

For $s = 0 To 49
        $Array[$s] = $s + 1
Next

For $s = 0 To 49
        _ArraySwap($Array, $s, Random(0, 49, 1))
Next

_ArrayDisplay($Array)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-2 17:29 , Processed in 0.075038 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表