Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
18.07.2011, 18:46 0

Генерация случайных чисел в заданном диапазоне.

18.07.2011, 18:46. Просмотров 9222. Ответов 21
Метки (Все метки)

Ответ

Цитата Сообщение от sandye51 Посмотреть сообщение
мне кажется это бред)
А мне нет!



Я думаю так:

Рассмотрим такой подход:
C++
1
int a=rand()%100;//получаем число от 0 до 99
при таком подходе очень высокая вероятность повторения получаемого числа, даже если rand() будет каждай раз возвращать неповторяющиеся числа. Т.е. при rand()=150 и rand()=250 (350, 450 и т.д.) мы получим число 50 (а в диапазоне от 0 до RAND_MAX у нас очень большая вероятность получить одинаковые числа), что, естественно, нам не нужно.
А так, как показанно по ссылке:
C++
1
2
3
4
5
6
7
8
int randomNumber(int hi)  // Правильный генератор случайных чисел для области значений [0,hi]
    {
       // Получение области значений [0,1)
       const float scale = rand()/float(RAND_MAX);
 
       // Возврат значения в области значений [0,hi]
       return int(scale*hi + 0.5); // неявное приведение типа и отброс дробной части числа
    }
повторяющееся число мы имеем шанс получить только, если rand() вернула число, которое уже было. При всех других значениях числа повторяться не будут (это исключено логикой получения числа).
Поэтому, при желании получить много случайных чисел в нужном диапазоне, вариант 2 конечно предпочтительней.

Вернуться к обсуждению:
Генерация случайных чисел в заданном диапазоне.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2011, 18:46

Генерация случайных чисел типа double во всем диапазоне
Нужна помощь в написании программы, генерирующей псевдослучайные числа типа...

Сформировать массив случайных целых чисел в заданном диапазоне
Такая вот задачка не получается решить(написать) её. (хочу понять-разобраться...

Записать в текстовый файл 20 случайных чисел в заданном диапазоне
. Напишите программу, которая создает текстовый файл и записывает в него 20...

0
Другие темы раздела
C++ Проблемма с логическим оператором if http://www.cyberforum.ru/cpp-beginners/thread334159.html
Всем привет. Мне надо было написать такую програмку: если пользователь вводит символ 'y' (yes), то он задаёт данные в структуру, которые в последствии отображаются, а елси пользователь вводит символ...
C++ Непонятная ошибка Не могу понять, где неправильно. У меня есть такая матрица А 1 4 2 1 3 6 1 5 2 2 3 5 Мне же её надо преобразовать к такому виду - В: 4 0 0 0 1 6 5 2 5 В матрице А числа идут как бы... http://www.cyberforum.ru/cpp-beginners/thread334155.html
C++ Как поместить в массив строк строку
Есть такой вот массив char s; ну или char** s; я никак не могу разобраться в этих указателях(( 1.Как поместить в него строку 2.Как извлечь из него строку
Вывод строки в текстовый файл C++
Вместо строки появляется нечто вроде 25d3fe4 Подскажите пожалуйста, в чем ошибка? ofstream fout; String str = Now(); fout << str.c_str();
C++ ofstream & ifstream :: binary read-write struct http://www.cyberforum.ru/cpp-beginners/thread334133.html
Не пойму в чем дело... но я не могу считать всю структуру FNTBINARY из файла, файл - это она и есть в бинарном виде, одна структура FNTBINARY. Размер структуры 72412, файл на диске весит 72440...
C++ Непонятная ошибка Нужно считать в вектор пар все числа, отличные от нуля. В паре - первое число - всегда типа int, второе - double. Написал небольшую ф-цию. Но не получается считать. Проблема - в одной строчке.. не... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru