Страница: 1 | 2 | 3 |
Вопрос: Системное время в мс. Возможно?
Добавлено: 29.10.05 20:03
Автор вопроса: Tamplier | ICQ: 298742928
Ответы
Всего ответов: 45
Номер ответа: 31
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #31
Добавлено: 01.11.05 17:39
Какой долго? Такой массив, который ты описал - 99тыс - сортируется ~10-15 мс. И примерно столько же создается по rnd. А тиккаунт, который ты собрался использовать, такие малые величины отследить не в состоянии.
Номер ответа: 32
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #32
Добавлено: 01.11.05 17:41
хотя, это мне все равно придется проделывать...
сие что есть? И с чем его едят?
Фича не прокатит. Я проект сасостоятельно разрабатываю. И мне надо там описать все подробно и самостоятельно. (Проект на олимпаду)
Номер ответа: 33
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #33
Добавлено: 01.11.05 17:43
Э неет Массив не просто так создается. Там нету чисел повторяюшихся.
Номер ответа: 34
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #34
Добавлено: 01.11.05 19:09
Ну, блин, артист Может научишь создавать массивы? А то может я неправильно их создаю?
For i = 0 To 100000
lngArr(i) = 2 * (Rnd(1) - 0.5) * Rnd(1) * (&H7FFFFFFF)
Next i
Чтобы массив из 99 тыс. случайных (неповторяющихся) элементов создавать целую минуту, это надо очень сильно постараться Например я так долго создавать его не смогу
Больше чем 60 мс на создание массива - не получается
Номер ответа: 35
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #35
Добавлено: 01.11.05 19:48
А если сделать, чтобы элементы были совсем-пресовсем неповторяющиеся, то вообще больше 30 мс не получается создавать массив:
Dim n As Long, k As Long
'заполняем массив неповторяющимися числами
'от 0 до 100000 по порядку
For i = 0 To 100000
arr(i) = i
Next i
'теперь хорошенько перемешиваем массив
'чтобы числа не шли подряд
For i = 0 To 100000
n = Rnd * 100000
k = arr(i)
arr(i) = arr(n)
arr(n) = k
Next i
Номер ответа: 36
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #36
Добавлено: 01.11.05 20:44
Гм..
- а вб знаешь?
Ну какие тут олимпиады?..
==
Напиши для олимпиады что-то типа 'калькулятора', им понравится..
==
Ну какой массив, блин, с интервалом создания 60 сек., у меня на этот счет только два символа >>
Номер ответа: 37
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #37
Добавлено: 02.11.05 18:17
Как смогу - приведу код
Простенькие и незамысловатые. Им этого хватает.
И вообще, как на счет того, чтобы от темы далеко не уходить, а?
Номер ответа: 38
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #38
Добавлено: 04.11.05 15:29
Так, код точно не помню, но могу примерно предоставить.
sub DimRnd (arr as long)
dim i as long, j as long
for i=0 to UBound(arr)
arr(i)=int(rnd*100000)*(-1)^int(rnd*2)
for j=0 to i
if arr(i)=arr(j) then
i=i-1
exit for
End if
next
next
End sub
Номер ответа: 39
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #39
Добавлено: 04.11.05 20:10
HOOLIGAN'а прошу не флудить.
Номер ответа: 40
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #40
Добавлено: 05.11.05 11:30
Заметно медленнее, чем int(rnd*200000)-100000, чем реже вызывается рандом, тем быстрее работает программа, не говоря уж о том, что поиск во всей предыдущей части массива есть мастдай, попробуй создавать двоичное дерево и туда вставлять каждое новое число, на больших массивах будет значительно быстрее. Вырождаться оно, по причине псевдослучайности чисел, не должно.
Номер ответа: 41
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #41
Добавлено: 05.11.05 13:13
Павел, насколько я понял, флудишь здесь ты.
Т.е. твоё сообщение в этой теме к программированию отношения никакого не имеет, в отличие от моих.
Номер ответа: 42
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #42
Добавлено: 06.11.05 10:30
HOOLIGAN, я администратор, я слежу за порядком и имею право делать предупреждения о несоблюдении правил.
Логин блокирован на неделю. Перечитай правила форума.
Номер ответа: 43
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #43
Добавлено: 07.11.05 16:16
Не понял я их. ( Может, кто доступным языком объяснит, а?
А про такой вариант я забыл... Сам же этот вевлосипед когда-то изобрел...
Хошь сказать дерево избавит от проблемы повторяющихся чисел? Если бы числа не повторялись, массив создавался бы гораздо быстрее.
Номер ответа: 44
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #44
Добавлено: 07.11.05 19:24
Вот алгоритм, который составляет несортированый массив из 100000 неповторяющихся элементов,
случайным образом разбросаных в диапазоне -100000 ... +100000
Dim n As Long, k As Long
Dim temp_arr(0 To 199999) As Long
Const EMPTY_CELL As Long = 777777
t = Timer
For i = 0 To 199999
temp_arr(i) = EMPTY_CELL
Next i
n = 0
For k = 0 To 99999
n = Int(Rnd * 199999) - 99999
While temp_arr(n + 99999) <> EMPTY_CELL
n = Int(Rnd * 199999) - 99999
Wend
temp_arr(n + 99999) = n
Next k
n = 0
For i = 0 To 199999
If temp_arr(i) <> EMPTY_CELL Then
arr(n) = temp_arr(i)
n = n + 1
End If
Next i
For i = 0 To 99999
n = Rnd * 99999
k = arr(i)
arr(i) = arr(n)
arr(n) = k
Next i
MsgBox Timer - t
Выполняет ту же задачу, что и твой код, но без поиска совпадающих элементов в массиве. Поиск не нужен по причине отсутствия совпадающих элементов.
Работает быстро - ок. 150 - 160 мс
Номер ответа: 45
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #45
Добавлено: 11.11.05 19:29
Я кстати, вполне мог ошибиться, и 60 сек уходило на 50тыс элементов...
Но за код большое спасибо.