kkate4ka
@kkate4ka
глупенькая девочка

Как вычислить функцию rand()?

Изначально задаю границы отрезка. Затем должна записать в функцию.
Например для интервала [-5., 5.] функция будет выглядеть так:
double random()										
{
	return (double) (-5.0) + (double)rand() / RAND_MAX * 10.0 ; // a = -5; b = 10
}

Но как сделать так, чтобы я задала сама границы интервала и в функции само все высчитывалось я не понимаю. Помогите, пожалуйста.
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 2
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
inline int getRandomNumber(int start, int end) {
	return start + rand() % (end - start);
}

допустим для getRandomNumber(10, 20);
rand() генерит числом до RAND_MAX,
% (end - start) "обрезает"(остаток от деления) до 10, т.е. 555 % 10 = 5
start + сдвигает на 10

Но лучше не использовать rand, а использовать современные решения https://stackoverflow.com/a/7560564/7458932
Если вы не в курсе, то у rand очень плохой псевдорандом и для серьёзных целей есть целый отдельный хедер с кучей других генераторов

и для double https://stackoverflow.com/a/9324796/7458932
Ответ написан
Комментировать
@vasilek-nik
double random(int a, int b)										
{
  return (double) a + (double)rand() / RAND_MAX * (b-a) ; 
}

Да в принципе, как у вас. Только в параметры функции добавились числа a и b. Длина диапазона вычисляется как разность конца и начала.
Пример использования:
cout << random(50, 100); // число в диапазоне [50, 100]

P.S. при необходимости a,b можно сделать double
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы