Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 03.01.2022
Сообщений: 52

Генератор случайных больших чисел

22.10.2023, 20:36. Показов 847. Ответов 12

Студворк — интернет-сервис помощи студентам
Как реализовать генератор случайных больших чисел через конкатенацию.
Как, например, получить случайное число между числами 2147483649 и 4294967296 (231+1 и 232).
Степень может увеличиваться.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2023, 20:36
Ответы с готовыми решениями:

Генератор случайных чисел
Еще одна тема о генераторе. Только вопрос, на который я пока не нашел ответа в других темах. Как сгенерировать случайное число в двух или...

Генератор случайных чисел
Помогите пожалуйста нужно написать программу генератора случайных чисел на с++. Чтобы пользователь сам ввел нужное количество (к примеру...

Генератор случайных чисел
составить генератор случайных чисел, имеющий два члена - границы последовательности. Предоставить метод, который выводит СЧ из диапазона...

12
Злостный нарушитель
 Аватар для Verevkin
10233 / 5662 / 1260
Регистрация: 12.03.2015
Сообщений: 26,245
22.10.2023, 20:42
Цитата Сообщение от nick_kekel Посмотреть сообщение
Степень может увеличиваться.
Докудова?
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
22.10.2023, 20:44
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main()
{
    unsigned long long LowerBound = 2147483649;
    unsigned long long UpperBound = 4294967296;
    
    unsigned long long Res = LowerBound + rand() % (UpperBound - LowerBound + 1);
    
    std::cout<<Res;
 
    return 0;
}
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
22.10.2023, 20:46
Цитата Сообщение от nick_kekel Посмотреть сообщение
Как, например, получить случайное число между числами 2147483649 и 4294967296 (231+1 и 232).
Генерировать разряды и лепить их в число. То бишь один генератор на каждые 3 цифры, от 0 до 999. Только не забыть, что в первой тройке чисел нули нужно опускать, а во всех последующих оставлять. Собственно на примере - 2147483649 и 4294967296. 214 - 748 - 364 - 9 - вышло 4 генератора. 429 - 496 - 729 - 6 - тоже 4 генератора. Ну и следим при генерации, что бы не получить числа вне диапазона. - В первом генераторе, например, мы не можем получить ниже 214 и больше 429 никак. И в конце тоже не можем получить выше 6, если все предыдущие цифры равны цифрам верхней границы.

Если придумаю ещё вариант - напишу

Добавлено через 30 секунд
Evgen173, а если там тысячная степень?
0
0 / 0 / 0
Регистрация: 03.01.2022
Сообщений: 52
22.10.2023, 20:53  [ТС]
Я просил генератор через конкатенацию, т.е случайное число составляются через другие случайные числа и их соединяют. Например, случайные числа 3,7,2,9,7 из них случайное число 37297. Проблема в том, что не знаю как минимум и максимум сделать
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
22.10.2023, 20:54
Цитата Сообщение от Evgen173 Посмотреть сообщение
rand() % (UpperBound - LowerBound + 1);
UpperBound - LowerBound + 1>RAND_MAX
поэтому, числа все равно будут от 0 до RAND_MAX
1
Злостный нарушитель
 Аватар для Verevkin
10233 / 5662 / 1260
Регистрация: 12.03.2015
Сообщений: 26,245
22.10.2023, 20:58
Цитата Сообщение от nick_kekel Посмотреть сообщение
Я просил генератор через конкатенацию, т.е случайное число составляются через другие случайные числа и их соединяют. Например, случайные числа 3,7,2,9,7 из них случайное число 37297. Проблема в том, что не знаю как минимум и максимум сделать
Ты на вопрос-то ответь, шельма!
0
0 / 0 / 0
Регистрация: 03.01.2022
Сообщений: 52
22.10.2023, 21:00  [ТС]
Вот пример генерации, только у нее ограничение только на длину, мне надо еще максимум и минимум
C++
1
2
3
4
5
6
7
8
9
10
11
int main() {
    string value = "";
    string maximum = "4294967296";
    string minimum = "2147483649";
    while (value.length() != maximum.length())
    {
            value+= to_string(rand() % 9 +1);
    }
    cout<<value<<endl;
    return 0;
}
Добавлено через 50 секунд
Verevkin степень любая
0
Злостный нарушитель
 Аватар для Verevkin
10233 / 5662 / 1260
Регистрация: 12.03.2015
Сообщений: 26,245
22.10.2023, 21:04
Цитата Сообщение от nick_kekel Посмотреть сообщение
степень любая
10100500 норм?
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
22.10.2023, 21:12
Лучший ответ Сообщение было отмечено nick_kekel как решение

Решение

nick_kekel, бахай тогда на каждую цифру генератор отдельный. Во-первых - если длина чисел по цифрам одинаковая - генерим на каждую цифру. Первая цифра по минимум точно должна быть не меньше минимума (в данном случае не ниже 2) и не больше максимума (не больше 4х). Дальше обрабатывать минимум легко - если предыдущая цифра на минимальной границе (выпало 2), то теперь минимальная граница у второй цифры будет цифрой минимума. И это сохраняется дальше. Если же на второй цифре упало не 1, а 2 - то все последующие можно генерировать от 0 до 9, число точно уже будет больше минимума. С максимумом просто зеркалим - если первая цифра 4 - то у следующей максимум будет 2. Ну и если упало не на максимуме - то все последующие бахаем от 0 до 9 тоже смело

Добавлено через 5 минут
С числами разного количества цифр - идём так же и когда цифры в одном числе кончились - учитываем уже только одно оставшееся (если будет максимум и мы ещё не выбивали цифру меньше цифер максимума - его цифры это порог в генерации, если минимум и не выбивали цифру меньше цифер минимума - его цифры нижний порог в генерации, если хоть раз выпала цифра в пути ниже максимума или больше минимума - генерим от 0 до 9). Ну и генерим перед этим сколько цифр добавить к числу вообще (от 0 до разницы в цифрах между максимумом и минимумом)
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12923 / 6790 / 1818
Регистрация: 18.10.2014
Сообщений: 17,180
22.10.2023, 21:43
Цитата Сообщение от nick_kekel Посмотреть сообщение
Как реализовать генератор случайных больших чисел через конкатенацию.
rand() - генерирует числа в диапазоне от 0 до RAND_MAX
rand() * (RAND_MAX + 1) + rand() - генерирует числа в диапазоне от 0 до (RAND_MAX+1)2-1
(rand() * (RAND_MAX + 1) + rand()) * (RAND_MAX + 1) + rand() - генерирует числа в диапазоне от 0 до (RAND_MAX+1)3-1

И так далее до получения требуемого диапазона, следя за тем, чтобы не получить переполнение в процессе вычислений.
0
Злостный нарушитель
 Аватар для Verevkin
10233 / 5662 / 1260
Регистрация: 12.03.2015
Сообщений: 26,245
22.10.2023, 21:51
Цитата Сообщение от nick_kekel Посмотреть сообщение
Как реализовать генератор случайных больших чисел через конкатенацию.
Самое главное спросить забыл - зачем это тебе надо?
А ну колись давай.
Очень интересно
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12923 / 6790 / 1818
Регистрация: 18.10.2014
Сообщений: 17,180
22.10.2023, 22:02
Цитата Сообщение от nick_kekel Посмотреть сообщение
Я просил генератор через конкатенацию, т.е случайное число составляются через другие случайные числа и их соединяют. Например, случайные числа 3,7,2,9,7 из них случайное число 37297.
То, что я привел выше в #11 - это и есть конкатенация.

Например, генератор случайных чисел rand() генерирует числа в диапазоне [0, RAND_MAX]. Это означает, что он генерирует цепочку из log2(RAND_MAX + 1) случайных двоичных битов. Комбинируя результаты нескольких вызовов rand() по приведенной мною выше схеме, вы выполняете конкатенацию этих цепочек битов в единую цепочку, получая большее случайное число.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2023, 22:02
Помогаю со студенческими работами здесь

Генератор случайных чисел
Как задать минимальное и максимальное число при генерации случайных чисел?

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

Генератор случайных чисел
Здравствуйте! Кто-нибудь объясните пожалуйста. Вот есть функция rand(). Она возвращает псевдослучайные числа от нуля до RAND_MAX. А можно...

Генератор случайных чисел
Добрый день. Ломаю голову как вывести вывести матрицу случайных символов за исключением одного. Есть поле 11х11 - arr, в центре (в...

генератор случайных чисел
Всем доброго времени суток, вот решил написать генератор чисел длины 768 бит, все отлично вроде и работает но только проблема в том что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru