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

Как увеличить диапазон rand()?

01.12.2015, 21:39. Показов 9720. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно заполнить оочень большой массив оочень большими числами. нигде не нашел ответа на этот вопрос. rand()%+любое число больше 32767 не работает.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.12.2015, 21:39
Ответы с готовыми решениями:

Как задать диапазон rand
Как задать диапазон rand например от 3 до -5?

Как задать диапазон с помощью функции rand?
В задаче говорится "Дан массив целых чисел (размер – случайное число из диапазона )". Как задать диапазон с помощью функции...

Как в rand указать двойной диапазон генерации?
Как в rand указать двойной диапазон генерации? Например чтобы числа генерировались от 5 до 10 и от 15 до 20 одновременно.

17
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
01.12.2015, 21:44
Maks53, например, такой дикий говновелосипед
C++
1
rand() % 1000 / 1000.0 * n;
0
 Аватар для Chertenok_n_13
219 / 125 / 99
Регистрация: 14.03.2011
Сообщений: 628
01.12.2015, 22:03
я б предложила такой вариант
C++
1
rand()*rand();
Добавлено через 3 минуты
вообще, в библиотеки предел rand это
C++
1
#define RAND_MAX  0x7FFFU
вроде это, если не ошибаюсь, столько же как и int

Добавлено через 12 минут
а еще есть вариант функции
C++
1
_lrand()
его максимальное значение long
2
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
01.12.2015, 22:06
Цитата Сообщение от Chertenok_n_13 Посмотреть сообщение
я б предложила такой вариант
Только надо понимать, что распределение у этого выражения будет уже довольно далеко от равномерного. Лучше уж
C++
1
rand() * RAND_MAX + rand();
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
01.12.2015, 22:07
Лучше пользоваться тем, что в <random>, а не древними функциями.
1
9 / 8 / 9
Регистрация: 29.11.2015
Сообщений: 30
01.12.2015, 22:11
попробуйте так, в первом случае получается большее число

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <random> 
#include <iostream> 
using namespace std;
 
int main()
{
    random_device gen;
 
    cout << "a random value == " << (unsigned long long)gen()*(unsigned long long)gen()*(unsigned long long)gen()*(unsigned long long)gen() << endl;
    cout << (unsigned long long)rand()*(unsigned long long)rand()*(unsigned long long)rand()*(unsigned long long)rand() << endl;
 
    system("pause");
    return 0;
}
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
01.12.2015, 22:11
Цитата Сообщение от nmcf Посмотреть сообщение
Лучше пользоваться тем, что в <random>
Лучше, но и сложнее, особенно для начинающих. К тому же, возможны разные интересные особенности вроде неполной поддержки стандарта или неработающего random_device.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
01.12.2015, 22:19
Да нет там ничего сложного. Две строчки. Уже во многих темах показывали.
Если не хватает простого random(), то уже будет усложнение.
Везде уже это поддерживается, ну кроме музейных компиляторов.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
01.12.2015, 23:34
Цитата Сообщение от Т_И_М_У_Р Посмотреть сообщение
попробуйте так
выглядит ужастно и не осознано
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
01.12.2015, 23:39
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
говновелосипед
Напомнило:
Миниатюры
Как увеличить диапазон rand()?  
2
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
01.12.2015, 23:56
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
 
    cout << (rand()<<18);
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.12.2015, 08:56
ilja123, там же нули будут.
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
02.12.2015, 09:18
Цитата Сообщение от nmcf Посмотреть сообщение
ilja123, там же нули будут.
C++ (Qt)
1
cout << (rand()<<10000);
у меня выдает 10-ти значное число. Например : 1089798144
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.12.2015, 09:57
Ты смысл этой конструкции понимаешь? Сдвиг на 10000 бит? Будет либо ноль, либо ошибка, либо непонятный результат как у тебя.
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
02.12.2015, 10:07
сдвиг влево - умножение

Пример (двоичный код): o01<<1 = o10 o10<<1 = o100
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
02.12.2015, 10:11
Цитата Сообщение от ilja123 Посмотреть сообщение
упс
нагавнокодил и думал не заметят?
Миниатюры
Как увеличить диапазон rand()?  
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.12.2015, 10:16
Цитата Сообщение от ilja123 Посмотреть сообщение
сдвиг влево - умножение
Это работает в пределах соответствующего типа.
И что даст умножение? Числа будут умножены на одну и ту же величину, а само количество вариантов останется прежним. Только <random>.
1
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 532
02.12.2015, 10:20
Цитата Сообщение от nmcf Посмотреть сообщение
Это работает в пределах соответствующего типа.
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
нагавнокодил
cout << rand() - 32768

cout << rand()<<10000 - 1089798144
Действительно не работает. Говнокод одним словом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.12.2015, 10:20
Помогаю со студенческими работами здесь

Как увеличить диапозон функции rand
Всем привет. Пытаюсь сделать, чтобы выдавало большое случайное число. Пытаюсь сделать так: __int 64 p= 489133282872437279; __int64 s...

Rand() выходит за диапазон
Две функции: inline void Playing_card::set_random_suit() { std::srand(time(NULL)); suit_ = Card_suit(rand() % spades + clubs);...

Выйти за диапазон rand
Нужно заполнить массив случайными числами от 1 до N. При этом N может быть больше 32 767, например, 100 000. Как исправить код,чтобы он...

Диапазон отрицательных чисел. Функция rand()
Как задать диапазон случайных чисел чтобы в него входили как положительные так иотрицательные числа к примеру от -100 до 100?

Как увеличить диапазон возразщаемых программой значений?
Условие задачи: С клавиатуры вводится основание системы счисления n (n меньше либо равно 10) и два числа, записанные в этой системе...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru