Страница: 1 |
Страница: 1 |
Вопрос: Рассортировать числа случайным образом
Добавлено: 14.03.05 14:01
Автор вопроса: serrin | Web-сайт:
Есть например числа 1,2,3,4,5(причём количество чисел меняется).Как их рассортировать случайным образом?Заранее извиняюсь,возможно такой вопрос уже был,но поиск в этом форуме постоянно глючит,ошибка на ошибке,если есть тема подобная киньте просто ссылку
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 14.03.05 16:00
Dim RandomNumber, Value
Randomize Timer
RandomNumber=INT(Value*RND)
MsgBox RandomNumber
Номер ответа: 2
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #2
Добавлено: 14.03.05 16:25
Положи свои цифирки в массив, бери по две случайно (спасибо Cyrax и меняй их значения местами. Делать это несколько раз или случайно:
10 + INT(50*RND)
Номер ответа: 3
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #3
Добавлено: 14.03.05 16:48
можно по простому создать др. массив и заполнять его из первого в случайном порядке. но это будет долше + надобержать логический массив, в котором содержится инфа о выбранных элементах
Номер ответа: 4
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #4
Добавлено: 14.03.05 16:51
Dim Arr(0 To 10) As Long
Private Sub Комманда1_Click()
 im i As Long
For i = 0 To 10 'массив чисел, идущих по порядку
Arr(i) = i
Next i
Перемешать
End Sub
Sub Перемешать()
 im i As Long, k As Long, OutArr(0 To 10) As Long
For i = 0 To 10
OutArr(i) = -1
Next i
Randomize Timer
For i = 0 To 10
k = Rnd * 10
 o While OutArr(k) <> -1
k = k + 1
If k > 10 Then k = 0
Loop
OutArr(k) = Arr(i)
Next i
For i = 0 To 10
 ebug.Print OutArr(i)
Next i
End Sub
Номер ответа: 5
Автор ответа:
serrin
ICQ: 163955885
Вопросов: 7
Ответов: 12
Web-сайт:
Профиль | | #5
Добавлено: 14.03.05 23:06
Ребят,спасибо,но задача несколько сложнее.массив таким образом
Dim A(X) as long,где X постоянно меняющееся количество циферок не задашь)
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 14.03.05 23:14
Ну значит массив Dim Arr() As Long
Далее как поменяется эта самая циферка, то Redim Arr(X)
И в циклах сделать следует так:
For i = 0 To UBound(Arr)
Номер ответа: 7
Автор ответа:
serrin
ICQ: 163955885
Вопросов: 7
Ответов: 12
Web-сайт:
Профиль | | #7
Добавлено: 14.03.05 23:16
Тормознулся вот на чём...
 im X As Long
 im J As Integer
 im Count As Integer
 im ExistInArray As Boolean
Count = 5
For J = 0 To Count
 o
ExistInArray = False
Randomize Timer
X = CLng(Rnd * Count)
For I = 0 To List1.ListCount - 1
If Val(List1.List(I)) = X Then ExistInArray = True: Exit For
Next I
If ExistInArray = False Then Exit Do
Loop
List1.AddItem X
Next J
НО!эта падла почемуто работает только в событии form_load,а мне надо штоб несколько раз...когда же её ставишь отдельным subом она,тварь вешает...Собсно готов биться башкой об стену,вот и спросил ваших идей)
Номер ответа: 8
Автор ответа:
serrin
ICQ: 163955885
Вопросов: 7
Ответов: 12
Web-сайт:
Профиль | | #8
Добавлено: 14.03.05 23:47
Всем огромное спасибо,отдельно sne...не знал про Redim Arr(X).Подтверждается старое правило-прежде чем спросить учи матчасть)