标题:求数字乱序排列的编程思路
取消只看楼主
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
结帖率:89.13%
已结贴  问题点数:20 回复次数:1 
求数字乱序排列的编程思路
求数字乱序排列的编程思路

已知条件:
dim a as string
a="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21"

如何将这21个数字随机取出(取出来还是21个)? 不要代码,求思路。

[此贴子已经被作者于2020-11-24 21:04编辑过]

搜索更多相关主题的帖子: 排列 编程 思路 数字 取出 编程 思路 取出 排列 数字 
2020-11-24 21:02
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
以下是引用cwa9958在2020-11-25 08:11:52的发言:

把a里的数据转换为数组。然后用随机数发生器产生个数,这个数就作为数组的下标,得到这个数,然后在数组里删除这个数,再重复,直到取完。



你后面的方法不好。

我的方法:
先字符串转数组,然后数组用洗牌算法随机洗牌,我已写好代码。
我用VBS写的,代码如下:

程序代码:
Sub Shuffle(ByRef a)
    Dim t, j, n
    n = UBound(a)
    Randomize
    For i = n To 1 Step - 1
        j = Int(Rnd * (i + 1))
        t = a(j)
        a(j) = a(i)
        a(i) = t
    Next
End Sub

Dim Array(20) '数组0到20,共21个数字
Dim str
str = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21"  '要随机的数字这样赋值
S = Split(str,",")  '以逗号作为分割

For i = 0 To UBound(S)
    Array(i) = S(i)
Next
a = Array(20)   '数组的个数。0到20,共21个

WScript.Echo Join(Array)  '洗牌前
Shuffle Array
WScript.Echo Join(Array)  '洗牌后
word = Join(Array)
T=split(word," ")  '以空格作为分隔符
For j = 0 To ubound(T)
MsgBox T(j)
Next


[此贴子已经被作者于2020-12-14 09:53编辑过]

收到的鲜花
  • teshubancai2021-01-19 09:48 送鲜花  1朵   附言:厉害了我的哥

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2020-11-25 08:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503998-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.592230 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved