случайные числа в c



Автор Owen Gefest задал вопрос в разделе Другие языки и технологии

C++ случайные числа и получил лучший ответ

Ответ от ?????? Зелёный змий ??????[гуру]
Вкратце: все генераторы выдают некое количество (множество) значений, и эти значения попадают в некий интервал. стандартный генератор rand() имеет множество значений RAND_MAX + 1 из диапазона [0 - RAND_MAX] определен RAND_MAX так #define RAND_MAX 0x7fff И никакая арифметика над полученными значениями не может увеличить множество значений. Уменьшить - может. Изменить диапазон значений можно с помощью арифметики, равномерность распределения и статистические характеристики могут пострадать, если применять бездарное преобразование. Одним из таких бездарных преобразований (и при этом почему то очень популярное) является операция взятия остатка. int r = rand() % 100; // так не нужно делать! Если нужны числа в диапазоне от 0 до 100 (не включая 100), то грамотное преобразование делается так int r = (100.0 / (MAX_RAND + 1)) * rand(); (100.0 / (MAX_RAND + 1)) - это компилятором будет конвертировано в константу с плавающей точкой, а все преобразование будет состоять из одного умножения на эту константу. Для примера нужен диапазон от -1000 до 1000, включая границы диапазона (всего 2001 значение) int r = -1000 + (2001.0 / (MAX_RAND + 1)) * rand();

Ответ от Пользователь удален[гуру]
что значит без заданного диапазона? у вас числа в компьютерном представлении в любом случае ограничены каким то диапазоном вычитайте и делите если нужно

Ответ от Krab Вark[гуру]
Сложи два числа. При переполнении получится отрицательное.

Ответ от Ёергей Алексеев[гуру]
Запускать парно два генератора случайных чисел. Один - непосредственно на число, второй - в интервале 0-1 - на знак. int y = random(2); int x = random(num); if(y)x*=-1;

Ответ от Technoraptor[гуру]
int number = rand(); if(number%2) number *= -1;

Ответ от Голый Мужик[гуру]
напишите свой генератор. class Random { private: int _seed; public: Random(int seed) : _seed(seed) { } int Next() { _seed = _seed*1664525 + 1013904223;

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: C++ случайные числа
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*