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

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

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

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

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

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

55 ответов

10 просмотров

@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

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

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

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта