170 похожих чатов

Господа. Я новичёк. Прошу прощения если тут для супер гуру

сообщество, а я тут со своими глупыми вопросами новичков.

Сейчас разбираюсь с рандомом и тут случился вопрос.

Я понимаю как написать рандом от 1 до 10
''' 1 + rang() % 10 '''

Но я хочу сделать рандом от 3 до 9
Куда писать какое значение ?
Ибо
''' 3 + rang() % 9 ''' будет выдавать от 3 до 11

55 ответов

14 просмотров

@Misketik, попробуй уменьшить девятку так, чтобы в сумме выдавало не 11, а 9

Не так много вариантов. Какие ты уже перепробовал?

А ещё лучше ознакомиться с инструментами C++ для генерации случайных чисел

Ofee Oficsu
А ещё лучше ознакомиться с инструментами C++ для г...

хз мне было гораздо сложнее пользоваться этим(да ладно и сейчас неудобнее пользоваться), чем rand

Егор (Дима)
для новичка и rang хватит

Зато, вместо магии со сложением и взятиями остатка мы получаем однозначно задающий границы код: std::uniform_int_distribution<> distrib(1, 6); И читаем его декларативно в рамках понятных мозгу представлений, а не разворачиваем императивный код в эти же представления

Ofee Oficsu
Зато, вместо магии со сложением и взятиями остатка...

и дополнительно написать 2 непонятных строки

Егор (Дима)
и дополнительно написать 2 непонятных строки

Ну, таков уж порог входа в нормальный, современный C++, вопрос того, нужно ли это — оставлю на потом

Параметрическое задание открытого интервала [a, b] - это функция f(t) = a + (b - a)*t, где t in [0, 1], f(0) = a f(1) = b Сможешь теперь составить функцию для интервала [3, 9]?

Ofee Oficsu
Зато, вместо магии со сложением и взятиями остатка...

distri...(сложное слово) и прочие штуки это вообще уже неплохо бы математику знать для таких понятий, так что рандом в С++ это явно не для новичков делалось. Для научных работ разве что

3 + rand()%6

Pepe 🐸
3 + rand()%6

а бот отправляет потом эти сообщения конечному получателю или ты ответил в пустоту?

Kelbon
а бот отправляет потом эти сообщения конечному пол...

хз, я вообще по диагонали прочитал. Это бот?)

Ofee Oficsu
@Misketik, попробуй уменьшить девятку так, чтобы в...

7 🤔 Теперь вообще перестал понимать.

Misket
7 🤔 Теперь вообще перестал понимать.

повторю вопрос, если % остаток от деления, то каким может быть значение x = rand()%N

Anatoly Shirokov
Параметрическое задание открытого интервала [a, b]...

@Misketik а вот ответ, на который даже не среагировали.

Kelbon
повторю вопрос, если % остаток от деления, то каки...

Видимо я в оконцове запутался и начинаю не понимать. То диапазон рандома что мне нужен был - это от 3 до 9 Получилось вот что: ''' 3 + rand() % 7 '''

Anatoly Shirokov
@Misketik а вот ответ, на который даже не среагиро...

Я новичёк. Я его прочел трижды. И я пока не понял его.

Misket
Видимо я в оконцове запутался и начинаю не понимат...

Задам вопрос. Какое минимальное и максимальное число возможно для rand() % 7? А если к минимальному и максимальному прибавить 3, как изменятся числа?

Kelbon
повторю вопрос, если % остаток от деления, то каки...

ну тыже близок к разгадке. каким может быть ОСТАТОК от деления на некое число?

Ofee Oficsu
Задам вопрос. Какое минимальное и максимальное чис...

@Misketik, а для rang() % 9? А что будет, если снова прибавить 3 к обоим числам?

Misket
Видимо я в оконцове запутался и начинаю не понимат...

программирование хорошо тем, что можно очень легко проверить. Запустить цикл да посмотреть что выведет твоё выражение

Kelbon
программирование хорошо тем, что можно очень легко...

На данном этапе полезнее самому выполнить работу цикла на бумаге

Misket
Нет. Всё. В край затупил.

https://ru.wikipedia.org/wiki/Деление_с_остатком

Misket
Нет. Всё. В край затупил.

подсказка, остаток от деления на N не может быть больше или равен N

Stas Koynov
https://ru.wikipedia.org/wiki/Деление_с_остатком

Я понимаю про деление с остатком. Эдакий 10 % 3 = 1

Misket
Нет. Всё. В край затупил.

Вы правильно там выше ответили, насколько я видел. Нижнюю границу диапазона Вы задаете константой буквально. Теперь: rand() возвращает некоторое неотрицательное целое (т.е. в т.ч. нуль). Нам нужно "ужать" его до диапазона от нуля до некоторого X. Этого мы достигаем получением остатка от целочисленного деления этого возвращаемого значения на X, который как раз окажется в диапазоне [0, X). Иллюстрирую: 0 % 3 = 0, 1 % 3 = 1, 2 % 3 = 2, 3 % 3 = 0, 4 % 3 = 1... Как Вы можете видеть, эта последовательность из повторяющихся значений, сгруппированных по X (в нашем случае - тройками), что нам и нужно. Теперь остается лишь прибавить это "ужатое" значение к нижней границе, чтобы получить результат в интервале [lowerBound, upperBound). Рекомендация: старайтесь находить экстремумы для подфункций алгоритма, чтобы прикинуть его corner-case'ы. Так его понимание может стать проще.

Misket
Я новичёк. Я его прочел трижды. И я пока не понял ...

t в данном примере rand()/RAND_MAX, a - начало интервала, в твоем случае 3, b - конец интервала (9), получаем: 3 + (9 - 3)*(rand()/RAND_MAX) = 3 + 6*(rand()/RAND_MAX)

Anatoly Shirokov
t в данном примере rand()/RAND_MAX, a - начало инт...

вот без шуток объяснения неочень лёгкие выходят

Kelbon
вот без шуток объяснения неочень лёгкие выходят

его упростили. я задал вопрос про x = M%N когда будет ответ мы продолжим. а пока он не готов.

Anatoly Shirokov
t в данном примере rand()/RAND_MAX, a - начало инт...

Вообще в хлам мозг превратился. Я не говорю, что вы плохой или все те кто тут пытается мне помочь. Я благодарен что тратите время на меня. Но по мне это выглядит мозгодробильно для новичка.

Misket
Вообще в хлам мозг превратился. Я не говорю, что в...

Проблема не в непонимании с++, а в непонимании математики

Stas Koynov
его упростили. я задал вопрос про x = M%N когда бу...

Да. Не готов. Потому как не понимаю при чем тут буквы. Цифры же нужны. 😞 Как может равна быть чему то х если цифр нет.

Misket
Да. Не готов. Потому как не понимаю при чем тут бу...

Звучит как фраза ребёнка, который перешёл в 5 класс и увидел уравнения))

Misket
Да. Не готов. Потому как не понимаю при чем тут бу...

естественно если даны буквы, то ответ в цифрах не дать... Но можно дать ответ в общем виде...

Misket
Да. Не готов. Потому как не понимаю при чем тут бу...

ты типа шутиш? какие буквы цифры. это уравнение. я прошу его мне решить. тыж понимаешь что если x = 1 +1 , то x == 2? да понимаешь вот я прошу тебя решить это в символах зная что x = M%N. я говорю что M и N целые числа. дай мне диапазон значений x в виде не равенства. это 8ой класс школы. Вики что есть остаток отделения тебе дали. Тут ++ нет. простая арифметика. о чем тут вообще говорить. символы-цифры... уже троллинг какой то. если ты работал на питоне щас в ++ пришел. уже язык не поворачивается тебя назвать новичком. тут нет ++ от слов совсем. тоже самое на питоне напиши. вопрос такой же. каким будет диапазон x.

Stas Koynov
ты типа шутиш? какие буквы цифры. это уравнение. я...

Нет не шучу. Я все это время не понимал что ты хотел что бы я на примере твоей формулы подставил свои значения.

Kelbon
откуда инфа про питон программиста

Начинал изучать питон, джаву.

Anatoly Shirokov
screenshot

это универсальная схема для получения псевдослучайного числа в диапазоне от a до b, включая границы. тебе достаточно подставить свои a и b.

Misket
Вообще в хлам мозг превратился. Я не говорю, что в...

Сначала находим фракцию от 0 до 1. Потом по этой фракции делаем выборку в переделах разницы между b и a. Затем сдвигаем число на основу(а)

Kelbon
ну это другой способ скажем так...

Фракция находится по (float)rand() / RAND_MAX

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта