Re[2]: random
>> Такая проблема, как в VS C++ получить случайную величину из заданного
>> промежутка, т.е. надо поучить случайный X из промежутка Xmin и Xmax.
Pac> value = rand() % Xmax + Xmin;
врёте немного.
остаток от 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?