![]() |
|
Модераторы: bsa |
![]()
|
|
| Давлат |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.1.2009 Репутация: нет Всего: нет |
Ищу эффективный способ разброса последовательностей цифр. Например: массив из 10 элементов (от 1 до 10) скопировать на другой массив такого же размера в случайном порядке, т.е. каждый раз разные последовательности и конечно повторяющихся цифр не должно быть. Хотелось бы узнать кто как эту задачу решает.
|
|||
|
||||
| pan2004 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 357 Регистрация: 28.7.2007 Репутация: 2 Всего: 9 |
std::random_shuffle(...)
|
|||
|
||||
| Давлат |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.1.2009 Репутация: нет Всего: нет |
При повторном запуске програмки с функцией -=std::random_shuffle(...)=- результат не меняется, а повторяющиеся хаотичность уже СИСТЕМА.
|
|||
|
||||
| pan2004 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 357 Регистрация: 28.7.2007 Репутация: 2 Всего: 9 |
ну дык srand() тебе на что? и потом, нигде ты не найдешь генератора истинно случайных чисел(разве что ускоритель частиц к компу подключать). Только псевдослучайные числа. И потом, в random_shuffle ты можешь сам нужную тебе рандом функцию указать, если rand() не устраивает Добавлено через 1 минуту и 14 секунд
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Из-за не 100 процентной рандомизации rand() возможны повторения.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Давлат |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.1.2009 Репутация: нет Всего: нет |
andrew_121, к сожалению в Вашем коде в список попадает одни цифры несколько раз :(
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Я об этом и говорил. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
|
|||
|
||||
| Давлат |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.1.2009 Репутация: нет Всего: нет |
я думаю здесь есть люди которые писали что то вроде тестовых програм. Там билеты или вопросы идут каждый раз по разному и не повторяются. Вот такой механизм мне надо. Поделитесь опытом
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
для i от n-1 до 0 //выполняем для n элементов массива
j=rand()%(i+1) //получаем случайный индекс в новом массиве, от 0 до i //корректируем этот индекс с учетом того что часть элементов заполнена для k от 0 до j если непустой(k) то //проверяем заполнен ли элемент выходного массива j=j+1 //увеличиваем индекс при каждом непустом элементе dest[j2]=src[i] //копируем элемент |
|||
|
||||
| pan2004 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 357 Регистрация: 28.7.2007 Репутация: 2 Всего: 9 |
я уже предлагал random_shuffle(), да и Lazin предложил свой вариант - (хотя в принципе, именно так random_shuffle и работает, через swap()). Насчет "не повторяются" я тоже сказал - используй srand(time(0)). Что еще не устраивает? |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
|
|||
|
||||
| Давлат |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.1.2009 Репутация: нет Всего: нет |
Спасибо всем.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |