|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||
Продвинутый рандом (возможность задать рандомное число в нескольких диапазонах)22.09.2014, 22:00. Показов 5067. Ответов 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
|
||||||
|
19501 / 10106 / 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
|
||||||
|
19501 / 10106 / 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
|
||
|
19501 / 10106 / 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
|
|
|
19501 / 10106 / 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
|
|||
|
19501 / 10106 / 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 | |
|
Дать программе возможность самостоятельно выбрать число из нескольких введенных пользователем Подсчёт количества текстового значения ячейки в нескольких диапазонах Как сделать, чтобы random работал в нескольких диапазонах?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool
Worker Pool — паттерн конкурентной обработки задач в Go.
Суть: фиксированное количество горутин-воркеров читают задачи из общего канала
и пишут результаты в общий канал результатов. . . .
|
|
[golang] Pipeline
alhaos 08.06.2026
Pipeline
Pipeline — паттерн конкурентной обработки данных в Go.
Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
|
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь
lIs4oanZS9Y
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|