|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||
Продвинутый рандом (возможность задать рандомное число в нескольких диапазонах)22.09.2014, 22:00. Показов 5058. Ответов 44
Метки нет (Все метки)
закончил с лабами и от скуки написал продвинутую версию рандома
просто короче мне понадобилось чтобы можно было задать рандомное число в нескольких диапазонах, вот и не найдя готового решения написал сам, оценивайте ![]()
0
|
||||||
| 22.09.2014, 22:00 | |
|
Ответы с готовыми решениями:
44
Задать рандомное число
|
|
2404 / 1934 / 763
Регистрация: 27.07.2012
Сообщений: 5,573
|
|
| 22.09.2014, 22:55 | |
|
Ну и замечу, что нет никакого "автоприведения" типов в С++. Есть неявное приведение. Даже на уровне русского языка это немного разные вещи. Неявно - это как бы что-то, что может быть сделано без ведома автора кода. И не всегда это желаемое действие.
0
|
|
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
| 22.09.2014, 23:03 [ТС] | |
|
Продвинутый рандом (возможность задать рандомное число в нескольких диапазонах) ежели кто не заметил...
0
|
|
|
2404 / 1934 / 763
Регистрация: 27.07.2012
Сообщений: 5,573
|
|||||||||||||
| 22.09.2014, 23:04 | |||||||||||||
Во-вторых, зачем сразу map? Map для других целей. Здесь же подойдёт контейнер попроще, например, vector<Range>.
0
|
|||||||||||||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||||
| 22.09.2014, 23:11 [ТС] | ||||||||
|
Добавлено через 2 минуты а хотя вот так вроде можно...
0
|
||||||||
| 22.09.2014, 23:19 | ||||||
|
Не по теме: Еще продвинутишей рандом:
0
|
||||||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
| 22.09.2014, 23:21 [ТС] | |
|
0
|
|
|
2404 / 1934 / 763
Регистрация: 27.07.2012
Сообщений: 5,573
|
|||
| 22.09.2014, 23:22 | |||
|
Но я бы использовал контейнер. Это в твоём примере тебе удобно вызвать всё одной строкой. А если представить, что диапазоны создаются где-то в другом месте кода?
0
|
|||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 22.09.2014, 23:22 | ||||||
Сообщение было отмечено GetHelp как решение
Решение
1
|
||||||
|
2404 / 1934 / 763
Регистрация: 27.07.2012
Сообщений: 5,573
|
|||||||
| 22.09.2014, 23:25 | |||||||
0
|
|||||||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||
| 22.09.2014, 23:29 [ТС] | ||||||
|
MrGluck, вооо спасибо, так вообще идеально
![]()
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
|||||||||||
| 23.09.2014, 00:36 | |||||||||||
|
Дались вам эти вектора и мапы...
С++11 (заменить на нормальный рандом из новой std:: по вкусу):
Чуть безопаснее вариант с лямбдой генератором (контроль, правда не очень явный, но для примера и так сойдет, что переданный тип именно Range или его наследник): Кликните здесь для просмотра всего текста
0
|
|||||||||||
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||||||
| 23.09.2014, 00:52 | ||||||
|
GetHelp, DrOffset, вы конечно меня извините, что со своим уставом, но у меня понятие генератора псевдослучайных чисел немного другое. А именно при десяке итераций
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 23.09.2014, 01:07 | ||
|
Добавлено через 5 минут КОП, А, я понял что тебя удивляет. Ну а чего ты хотел? Последний бросок нам дает 50/50 первый или второй элемент (соответственно либо [0,1], либо другое число из второго диапазона). Здесь нужен по-хорошему другой алгоритм совсем. Лично я вообще не утверждал, что этот генератор рабочий. Я привел только вариант оптимизации функции ТС.
1
|
||
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||
| 23.09.2014, 01:18 | ||
|
DrOffset, я то в курсе почему) и это был не пост удивления. Я к тому и вел, что пока вы там аргументы мусолите, алгоритм тоже косячит.
1
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 23.09.2014, 01:33 | ||
|
Я лично пока не готов продолжать конструктивную беседу на эту тему. Если будут идеи - напишу.
0
|
||
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
| 23.09.2014, 01:39 | |
|
DrOffset, что если найти общее число возможных вариантов (кол-во чисел во всех диапазонах), сгенерировать рандомное число от 0 до этого кол-ва. А потом вернуть соответствующее число из соответствующего диапазона?
PS: пробную функцию пока нет времени писать.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
|||||||
| 23.09.2014, 02:10 | |||||||
|
Вот набросок идеи из предыдущего сообщения (заодно, если кому интересно, сделал контроль типа Range).
1
|
|||||||
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|||
| 23.09.2014, 03:05 | |||
|
вот что выводит: Ошибка 1 error C2668: fabs: неоднозначный вызов перегруженной функции Ошибка 2 error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции допустим по тому, что я написал выше: каждому элементу множества возможных значений из разных диапазонов есть только один сопряженный элемент из нашего нового множества (кол-во элементов равно). Теперь если мы рандомно выбираем из нашего множества, то и из исходного множества тоже определяется один случайный элемент. Куда строже я не знаю, наверняка комиссия строгих дядек даже не посмотрит на такое обоснование, но вроде суть передал. Добавлено через 7 минут не удержался, воткнул явное преобразование, результат такой: диапазоны - 0..2, 50..100 Тест в 10000 итераций. числа 0..2 встретились по ~120 раз, 50..100 по ~190 раз.
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
|||||||||||
| 23.09.2014, 13:11 | |||||||||||
|
Но вообще, я говорил про свои мысли, т.к. не рискну ничего утверждать или советовать, пока не буду уверен на 100%. От тебя я никаких доказательств не требую. ![]() То что я выше выложил - это баловство. Давай пока исходить из экспериментов. Предложи вариант реализации, посмотрим как он себя ведет. Добавлено через 2 часа 48 минут КОП, Я неправильно сперва понял твою идею. Вот моя реализация: Тест. Похоже то, что нужно .Добавлено через 23 минуты Заменил реализацию, на чуток поприличнее (корректность цикла обеспечивается по условию суммы + защита он перепутанных min и max): Кликните здесь для просмотра всего текста
0
|
|||||||||||
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||||||
| 23.09.2014, 18:58 | ||||||
![]()
0
|
||||||
| 23.09.2014, 18:58 | |
|
Помогаю со студенческими работами здесь
40
Дать программе возможность самостоятельно выбрать число из нескольких введенных пользователем Подсчёт количества текстового значения ячейки в нескольких диапазонах Как сделать, чтобы random работал в нескольких диапазонах?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|