| 
 
				SergOz, твоя задача решается следующим образом:1) Тебе нужен массив на 9 чисел. По умолчанию в них будут значения 1, 2, 3, 4, 5, 6, 7, 8, 9.
 2) Тебе нужна переменная, которая будет хранить длину массива.
 
 Для генерации случайного числа выполняем следующее:
 1) Генерируем случайный индекс от 0 до РазмерМассива - 1.
 2) Смотрим элемент в массиве под данным индексом и запоминаем его в результат.
 3) Копируем последний элемент массива в тот, что выпал случайно.
 4) Уменьшаем размер массива на один.
 
 Привожу пример.
 Массив: 1 2 3 4 5 6 7 8 9
 Размер массива: 9
 
 Генерируем случайный индекс от 0 до (9 - 1) = 4.
 Под индексом 4 у нас значение 5. 5 → первый результат. Копируем в этот элемент значение последнего (9) и уменьшаем длину массива на один.
 
 Массив: 1 2 3 4 9 6 7 8
 Размер массива: 8.
 
 Как видишь, после указанной операции у нас массив чисел, в котором уже гарантированно нет ранее сгенерированного числа.
 Повторяем процедуру. Случайный индекс от 0 до (8 - 1) = 2.
 
 В результат помещаем ещё одно число (3), которое заменяем на 8 в массиве.
 
 Массив: 1 2 8 4 9 6 7
 Размер массива: 7.
 
 Случайный индекс: 6. В результат помещаем 7, заменяем 7 на 7 и уменьшаем размер массива на один.
 
 Массив: 1 2 8 4 9 6
 Размер массива: 6.
 
 На ЕРМ тебе понадобятся:
 
 !#VA(uniqueNumbers[9]:y); Массив, в котором хранятся уникальные числа
 !!VR(uniqueNumbers):C1/2/3/4/5/6/7/8/9; сразу же его заполни
 !!VR(sampleSize:y):S9; начальный размер массива
 
 Сгенерировать случайный индекс можно командой R0/мин/макс.
 Если нужно сгенерировать число от 0 до 9 - 1, можно сгенерировать от 1 до 9, а затем вычесть 1.
 
 !!VR(randomInd:y):R0/1/(sampleSize) -1; получили случайный индекс.
 !!VR(randomItemPtr:y):S(@uniqueNumbers) +(randomInd); Random item pointer — указатель на случайный элемент в переводе
 Вычисляется как индекс начала массива + смещение в массиве. Если у тебя массив y50..y58, то 50 — его начальный индекс.
 @uniqueNumbers и компилируется в начальный индекс массива
 
 само значение по указателю можно получить так: y(randomItemPtr)
 
 Попробуй поэкспериментировать. Если не выйдет, приведу полный код.
 
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |