random

Привет Всем !!!
Такая проблема, как в VS C++ получить случайную величину из заданного
промежутка, т.е. надо поучить случайный X из промежутка Xmin и Xmax.
Какие функции использовать?
← Апрель 2004 → | ||||||
6
|
||||||
За последние 60 дней ни разу не выходила
Сайт листа:
http://codeguru.ru
Открыт:
21-09-2003
Пре-модерация: Нет
Адрес для писем в лист: comp.soft.prog.prog-list@subscribe.ru
Адрес
модератора: comp.soft.prog.prog-owner@subscribe.ru
Привет Всем !!!
Такая проблема, как в VS C++ получить случайную величину из заданного
промежутка, т.е. надо поучить случайный X из промежутка Xmin и Xmax.
Какие функции использовать?
врёте немного.
остаток от rand()%xmax может стать равным xmax-1 или xmax-2. а xmin
может быть больше 1 или 2.
да и % действует только на целочисленные значения.
как известно из курса теории вероятности, любую случайную величину
(читай последовательность) можно получить из rnd[0...1]. что и
реализовано в данном шаблоне:
template <class T>
T my_rand(T xmin, T xmax){
return xmin+(xmax-xmin)*(double(rand())/RAND_MAX);
}
в 7-ой VC всё работает. насчет 6-ой не помню.. вроде там были косяки с
шаблонами, но могу ошибаться.
или можно сразу указать тип:
int my_rand(int xmin, int xmax){
return xmin+(xmax-xmin)*(double(rand())/RAND_MAX);
}
либо
double my_rand(double xmin, double xmax){
return xmin+(xmax-xmin)*(double(rand())/RAND_MAX);
}
any questions?
Win32)
Доброго времени суток!
On Fri, 9 Apr 2004 23:32:49 +0400 you wrote:
Ну и что?
В вопросе не уточнялось насчет типа случайной величины.
Hello Pavel,
Saturday, April 10, 2004, 9:30:11 AM, you wrote:
так ведь надо было получить числа от xmin до xmax.
а так получаются числа от xmin до xmin+xmax-1
может имелось в виду rand()%(xmax-xmin+1) + xmin ?
именно поэтому лучше общее решение.
Win32)
Доброго времени суток!
On Sat, 10 Apr 2004 18:04:48 +0400 you wrote:
Согласен, ошибся.
Человеку надо узнать как генерировать случайные числа, а Вы начинаете
объяснять ему принципы теории вероятностей. Это все равно, что если я
спрошу как включить телевизор, а Вы мне начнете объяснять что такое
электричество.
Все, закрываем эту тему.
Hello Pavel,
Saturday, April 10, 2004, 6:36:12 PM, you wrote:
Очень преувеличено. Досконально объяснять матчасть я не пытался. Просто написал
из чего следует предложенный кусок кода.
Оке.
Оффтоп. Бывает забавно ответить на простой вопрос развернутым
ответом, а на нормально заданный (с предысторией проблемы, с догадками)
как можно лаконичнее. Попробуйте :)
Win32)
Доброго времени суток!
On Fri, 9 Apr 2004 00:09:17 +0700 you wrote:
value = rand() % Xmax + Xmin;