打乱顺序

来源:百度知道 编辑:UC知道 时间:2024/05/03 07:25:26
10个小朋友,10个位置,现在每人都坐在一个位置上(即一一对应:a-A,b-B,c-C.....符号编码可以随便),现在要求随机打乱顺序代码(即小朋友乱坐了)?
要求小孩子编码上一个记录本来位置的值,和乱做后的值。
能提供多种解题方案可能? ++感谢
VB妮可的答案中调整后情况:用s()的下标记录了现在的位置,而用“小1”“小2”。。中的“1”“2”代表了原先的位置,类型与位置都不同有点不好比较,能改改吗???还有其它方式实现吗?
adai011的答案与我的自己的想法很想近,区别只在他是移动凳子我是移动人,只一点:i <> Timi 这句我觉得可以不要,因为原题并不要求必须换位,同时,如果是11个或9个小朋友就有可能出现无限循环,不过还是谢谢了

呵呵..

Private Sub Command1_Click()
Dim s(1 To 10), i%, j%, m%, a$

For i = 1 To 10
s(i) = "小" & i
Next

Print "原来的位置:"
Print Join(s)

Randomize
For i = 1 To 30
j = Int(Rnd * 10 + 1)
m = Int(Rnd * 10 + 1)
a = s(j)
s(j) = s(m)
s(m) = a
Next

Print "调整位置后:"
Print Join(s)
End Sub

Private Sub Command1_Click()
Dim xi(2, 10) As Integer'定义二维数组,第一列放原始位置,第二列放新位置
For i = 0 To 9'赋值原始位置
xi(0, i) = i
Next
tem = "0234567891"'定义新位置必须的10个位置
i = 0
Do While Len(tem) > 0'判断是否已经全部把新位置填入
timi = Int(Rnd * 10)'产生随机的新位置
If InStr(tem, timi) > 0 And i <> Time Then'如果所产生的新位置没有使用且与原位置不相同则将新位置填入i对应位置
xi(1, i) = timi'填第i个的新位置
i = i + 1
tem = Replace(tem, timi, "")&