Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
1

Может кто знает как сделать рандом от 0 до 4294967295

16.06.2016, 02:33. Просмотров 799. Ответов 37
Метки нет (Все метки)

Столкнулся с ограничение в 32 тысячи при рандоме.

C++
1
2
3
4
5
6
7
srand((unsigned int)time(NULL));
unsigned int tmp = 0;
    for (int i = 0; i < 100; i++)
    {
        tmp = 0 + rand() % 4294967295;
..... код
}
ограничение понятно, но как генерить случайные от 0 до 4294967295 ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2016, 02:33
Ответы с готовыми решениями:

Может кто знает как составить из этих слов осмысленный текст?
Описание главной функции, оператор цикла while, оператор ввода и вывода...

Задания в С++ (Возможно кто знает как сделать)
Задали задания по практике, все сделала кроме С++, т.к. в ней немного не...

нужно сделать трассировку. кто-нибудь знает как?
неужели никто не знает как делать трассировку? завтра преподу сдавать все, а я...

Запутался с IF. Может кто-то знает в чём ошибка?
Программа, нужно ввести значение &quot;х&quot; и &quot;а&quot;, и определить значение функции в...

Преобразование времени (double. Может всё-таки кто-нибудь знает)
Как double сделать так, чтобы он работал по такому принципу. К примеру идет...

37
Леонид1300
3 / 3 / 1
Регистрация: 03.03.2016
Сообщений: 86
16.06.2016, 02:40 2
Вы имеете ввиду в этом диапазоне чтобы одно число вышла, или как ?
Дайте точный вопрос или же пример
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
16.06.2016, 02:49  [ТС] 3
естественно 1 число от 0 до 4294967295 которое будет присвоено переменной tmp. при таком коде попадают данные с 0 до 32 тысяч

Добавлено через 44 секунды
тут пример у меня цикл который генерит 100 случайных чисел)но они все short)
0
илья9696
120 / 120 / 70
Регистрация: 15.11.2014
Сообщений: 545
Завершенные тесты: 3
16.06.2016, 02:55 4
А обязательно рандом?
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
16.06.2016, 02:56  [ТС] 5
да естественно
0
palva
3101 / 2233 / 450
Регистрация: 08.06.2007
Сообщений: 8,135
Записей в блоге: 4
16.06.2016, 03:01 6
А если так?
C++
1
        tmp = rand()<<17 | rand()<<2 | rand() & 3;
3
илья9696
120 / 120 / 70
Регистрация: 15.11.2014
Сообщений: 545
Завершенные тесты: 3
16.06.2016, 03:02 7
Лучший ответ Сообщение было отмечено Ko как решение

Решение

Загуглил по поводу функции
Функция rand() возвращает целое число от 0 до значения присвоенного константе RAND_MAX. Значение RAND_MAX зависит от системы и определено в заголовочном файле stdlib.h. Так, например, оно может быть равно 32767 (двухбайтовое целое) или 2147483647 (четырехбайтовое целое).
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
16.06.2016, 03:12  [ТС] 8
я уже это гуглил

Добавлено через 1 минуту
код есть рабочий?)
0
илья9696
120 / 120 / 70
Регистрация: 15.11.2014
Сообщений: 545
Завершенные тесты: 3
16.06.2016, 03:14 9
Ko, palva, скинул неведомая вещь. Просто жесть
1
Миниатюры
Может кто знает как сделать рандом от 0 до 4294967295  
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
16.06.2016, 03:15  [ТС] 10
этот код конечно супер"tmp = rand()<<17 | rand()<<2 | rand() & 3;
", но тут может быть вообще число 0?
0
meJevin
157 / 149 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
16.06.2016, 03:15 11
Лучший ответ Сообщение было отмечено Ko как решение

Решение

Ko, так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <random>
#include <ctime>
 
void main()
{
 
    std::default_random_engine randomEngine(time(0));
 
    std::uniform_int_distribution<unsigned int> randomNumber(0, 4294967295); // (0, std::numeric_limits<unsigned int>::max());
 
    std::cout << randomNumber(randomEngine) << std::endl;
 
    std::cin.get();
 
}
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
16.06.2016, 03:16  [ТС] 12
как это "rand() & 3" понять?
0
илья9696
120 / 120 / 70
Регистрация: 15.11.2014
Сообщений: 545
Завершенные тесты: 3
16.06.2016, 03:17 13
Поставил в общем, если найдет то остановит, пойду спать. А так пока меньше 6 знаков не было

C++
1
2
3
4
if(d < 1000)
        {
        system("pause");
        }
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
16.06.2016, 03:21  [ТС] 14
видимо все классные программисты по ночам обитают тут)

Добавлено через 2 минуты
илья9696 ты мне скажи если будет 0))))))))))
0
илья9696
120 / 120 / 70
Регистрация: 15.11.2014
Сообщений: 545
Завершенные тесты: 3
16.06.2016, 03:23 15
Следующее значение 0, посмотрим будет ли
1
Миниатюры
Может кто знает как сделать рандом от 0 до 4294967295  
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
16.06.2016, 03:26  [ТС] 16
а я предыдущий код на ночь поставлю поглядим что будет)))
0
nmcf
6405 / 5667 / 2580
Регистрация: 14.04.2014
Сообщений: 23,980
16.06.2016, 07:56 17
meJevin, же показал нормальный вариант, с нулём.
0
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
16.06.2016, 12:02  [ТС] 18
запустил на ночь, меньше 10000 не было числа
0
MrGluck
Модератор
Эксперт CЭксперт С++
8101 / 4952 / 1436
Регистрация: 29.11.2010
Сообщений: 13,437
16.06.2016, 12:27 19
meJevin, если нужен именно максимум от unsigned int, то можно явно не задавать границы.
C++
1
2
explicit uniform_int_distribution ( result_type a = 0,
    result_type b = numeric_limits<result_type>::max() );
int main

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <random>
 
int main()
{
    std::mt19937 gen {std::random_device()()};
    std::uniform_int_distribution<unsigned int> dist;
    std::cout << dist(gen) << std::endl;
}
1
palva
3101 / 2233 / 450
Регистрация: 08.06.2007
Сообщений: 8,135
Записей в блоге: 4
16.06.2016, 12:32 20
Лучший ответ Сообщение было отмечено Ko как решение

Решение

Почему бы не быть нулю? Если генератор случайных чисел хороший, то ноль тоже должен иногда случаться. Можно даже посчитать вероятность.
Цитата Сообщение от Ko Посмотреть сообщение
как это "rand() & 3" понять?
& - это операция побитового умножения. А в данном случае из очередного случайного числа выделяются два правых бита (3 это, как известно, ...0000000000000011). Остальные биты устанавливаются в ноль.
1
16.06.2016, 12:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2016, 12:32

Где можно посмотреть все функции по работе с динамической памятю в C++ ? Может кто сайт знает
???

Кто может сделать?
Описать статический массив. Реализовать 2 способа инициализации массива...

кто знает как?
1. Написать шаблон функции для нахождения индексов элементов из заданного...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru