Последние записи
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
- Взаимодействие через командную строку
- Сравнение языков на массивах. Часть 1
- Сравнение языков по скорости
- Чтение огромных xml-файлов
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
14th
Окт
Как в RandomRange исключить определенные числа?
Posted by Chas under Delphi
К примеру число 53, как это сделать?
Serge_Bliznykov
Во-первых, не «цифра», а «число».
А во-вторых, ну выпадёт ещё раз, ещё раз генерите ПСЧ. до тех пор, пока не выпадет другое.
общая логика такая (если, например, не нужны числа 53, 35 и 99 ):
Randomize;
....
repeat
r := RandomRage(x, y);
until (r<>53) and (r<>35) and (r<>99);
phomm
Иногда, понта ради, я пользуюсь хаками (для себя, не в продакшене, конечно). Сей случай хорошая возможность продемонстрировать это
предположим надо сгенерировать число от 1 до 100, за исключением 53, 35 и 99:
Result := Random(100-1-3) + 1; // числа 1 и 100 - здесь диапазон генерации
For i := 1 to 3 do // 3 тут и на пред. строке - кол-во исключаемых эл-тов
Inc(Result, Ord(Result >= Ord(#35#53#99))); // сама магия, числа для исключения через # по возрастающей
Ну а сам пример — небольшая математическая уловка.
Хак со строкой можно делать даже для чисел больше 255, вообще он предназначен для определения некоего произвольного набора чисел, сразу в коде, без декларации, некоторое время назад придумал сам, но пока пользовал просто в экспериментальных вещах, ну а орд от булеана довольно известный, пользую нередко
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)