![]() |
|
|
![]()
|
|
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Привет!
Может Г.А??? Операция кросовера как раз разнообразит геном... А отбирать надо наиболее разнообразные. Но это только для сравнительно больших диапазонов чисел. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Akina, я немного не понял твоей идеи, поэтому возможно продублирую..
Вроде получилось оптимально и без ужасов Идея: есть "мешок" с числами достаём оттуда в случайном порядке, но не кладём числа обратно в мешок. Алгоритм: массив из n чисел (n = max - min) в случайном порядке находится не число, а индекс в этом массиве от 0 - n. Искомое число - число по этому индексу. Забрали число, на его место ставим последнее, массив таким образом сокращается на один элемент.
Акина, разобрался с твоим алгом. Но если Array(0,i) = Random Несколько раз даст один и тот же результат? |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
есть еще одно условие: "Числа не должны повторяться".
Добавлено @ 01:14 sergej.z а чем к примеру, твой алгоритм лучше моего? Добавлено @ 01:16 Насколько я понял, твой вариант быстрее, т.к. нет вероятности того, что "выпадет" тоже самое число. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Мой алгоритм линеарный. Без циклов совсем. O(n). Самое сложное действие - % на 32 такта
ИМХО - оптимальное решение. Гы
|
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Гы
|
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Гы... Начинающий программист: Я тут написАл программу, но она не работает, где ошибка? Опытный программист: В генах...
при этом числа действительно будут в случайном порядке, но, увы, рандом будет неравномерным... вероятность последних чисел быть "первее" в выборке будет выше, чем первых... надо сдвигать, а не переносить последнее. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
сдвигать - это уже совсем другая работа.. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Вероятность остаётся той же самой. ведь случайный индекс 0 - величина_мешка. От того, где какое число стоит, ничего практически не зависит. Попробуй прогони програму 10 000 раз, никакой зависимости от сдвига не заметишь. Даже наоборот, числа дополнительно "перемешиваются" |
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Как вариант можно попробовать линейный конгруэнтный метод.
Определения. Используются следующие неотрицательные числа: Xn, Xn >= 0 - начальное значение, a, c, a > 0, c > 0, m, m > X0, m > a, m > c - модуль. Линейная конгруэнтная последовательность случайных чисел получается из соотношения X(n+1) = (a*Xn + c) mod m, n >= 0. Теорема. Длина периода линейной конгруэнтной последовательности равна m тогда и только тогда, когда c и m взаимно просты, b = a - 1 кратно p для любого простого p, являющегося делителем m, b кратно 4, если m кратно 4. Пример. m = 7, c = 1, a = 4, X0 = 5. Последовательность 5 0=4*5+1 mod 7 1=0*5+1 mod 7 6=1*5+1 mod 7 3=6*5+1 mod 7 2=3*5+1 mod 7 4=2*5+1 mod 7 получили числа от 0 до 6 Правда, надо m раскладывать на множители... Это сообщение отредактировал(а) nworm - 14.11.2005, 15:06 |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
А вот вариант на Яве. Передаем аргументами два числа (a и b) и функция возвращает в случайном порядке все числа, где:
a<=x>=b x - натуральное число
|
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Denis-delphist, хватит флеймить! -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| eskaflone |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 5.11.2005 Репутация: нет Всего: 3 |
значения math.Random будут повторятся ,и условие
|
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
eskaflone, читай внимательно весь топик. Возможно несколько раз...
|
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
[прочитал кажется всё и не по диагонали даже]
sergej.z можно записать короче
Это сообщение отредактировал(а) Mayk - 26.11.2005, 22:19 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Mayk из того, что перемешивание закрыли в функцию, не следует, что там нет переборки массива.
Из того, что ктото подумал над решением задачи, не следует, что не обязательно подумать ещё раз. А в общем + за нахождение функции. Это STL, как я понимаю? Я с ним не очень много работал и в последний раз 4 года назад Добавлено @ 22:34 Кстати это помоему не намного длиннее. Если учесть, что это полная программа.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |