Рандомизация конкретной позиции чисел - PullRequest
0 голосов
/ 29 мая 2018

Например, у меня есть номера 1,9,7,4, и я хочу рандомизировать их положение, чтобы я получил 9,1,4,7 или 7,1,9,4 и т. Д. Знаете ли вы, как?Спасибо

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Вот более вероятный (упрощенный) пример: (надеюсь, я не сделал за вас домашнюю работу)

Sub sub1()
  Dim i1&, i2&, iswap&, a4 As Variant
  a4 = Array(1, 9, 7, 4)
  For i1 = 0 To 3
    i2 = Int(Rnd() * 4) ' random integer 0 to 3
    iswap = a4(i1) ' swap(a4(i1), a4(i2))
    a4(i1) = a4(i2)
    a4(i2) = iswap
  Next i1
  Debug.Print a4(0); a4(1); a4(2); a4(3) ' Ctl-G to view, F7 to get back to code
End Sub
0 голосов
/ 04 июня 2018

Вы не указали основной диалект, поэтому вот код:

a(1) = 1 : a(2) = 4 : a(3) = 7 : a(4) = 9
FOR l = 1 TO 4
    SWAP a(l), a(INT(RND * 4 + 1))
NEXT
END
0 голосов
/ 29 мая 2018

Вот базовый vba, рандомизированный в объект словаря.

Dim vals As Variant, ord As Object

Set ord = CreateObject("scripting.dictionary")

vals = Array(1, 4, 7, 9)

Do While ord.Count < (UBound(vals) + 1)
    ord.Item(vals(Application.RandBetween(LBound(vals), UBound(vals)))) = vbNullString
Loop

Debug.Print Join(ord.keys, ", ")
...