Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ С\С++ _ [C++] Генерация случайных чисел

Автор: ++Norton++ 4.10.2009, 14:49

Подскажите пожалуйста, возможно ли сгенерировать числа от 0...n в случайном порядке, но так, чтобы они не повторялись? Например, от 0 до 10: 5 1 8 2 9 3 10 7 4 6 и т.п.
Если возможно, то подскажите как?
Заранее спасибо!
-----------------
P.S. Извините, за то что столько дублей создал, вышло случайно....

Автор: Влад 4.10.2009, 15:14

А почему - не повторялись? Если они заведомо не будут повторяться, то к ближе к концу последовательности они не будут уже истинно случайными, разве нет?
Ну, а так - смотри функцию random_shuffle().

Автор: ++Norton++ 4.10.2009, 21:47

Дело в том, что необходимо реализовать задачу перестановки символов в строке случайным порядком.
Допустим если строка из 14 символов, генерируются случайным образом числа от 0 до 14 и заносятся в массив. Тогда если нулевым элементом массива является цифра 5, то нулевой символ строки меняется местом с 5м символом этой же строки и т.д. Соответственно по этому нужно чтобы сгенерировалось 14 чисел от 0 до 14 и чтобы были все числа, т.е. небыло повторов, т.к. в противном случае не все символы строки будут перемешаны.

Автор: ++Norton++ 4.10.2009, 22:25

Не пойму... компилятор ругается: error: 'random_shuffle' was not declared in this scope
Странно, почему? Вроде инклуд algorithm сделал.
Может его как-то еще объявить надо?

Автор: Влад 4.10.2009, 22:35

Цитата(++Norton++ @ 4.10.2009, 22:47) *
Дело в том, что необходимо реализовать задачу перестановки символов в строке случайным порядком

1. А! Ну, так это в чистом виде random_shuffle(), именно для подобных задач она и предназначена.
2. Квалификатор std:: не забыл?

Автор: ++Norton++ 4.10.2009, 23:02

Точно! Оно самое, забыл std :) Огромное спасибо!

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)