Не могу понять как заставить генератор случайных чисел давать дробные значения.
Пробовал сделать так.
A = rand() % 158.691+(-1.235);
не получилось.
Интервал от -1.235 и 157.456.
#include
int main()
{
int N,M;
int max = 157456, min = -1235;
cout << "Enter size of matrix A:N " << endl;
cin >> M;
cout << "Enter size of matrix A:M " << endl;
cin >> N;
cout << "Creating matrix A:" << endl;
// Создаётся матрица A
float **A = new float* [M];
srand(time(NULL));
int i = 0;
do {
A[i] = new float [N];
i++;
}
while(i
// Освобождение памяти
for (int i = 0; i < N; i ++) delete [] A[i];
delete [] A;
system("pause");
return 0;
}
Ответ
На самом деле всё просто.
// Генерирует случайное действительное число от 0 до 1
(double)(rand())/RAND_MAX
// Генерирует случайное действительное число от 0 до N
(double)(rand())/RAND_MAX * N
Вот пример:
#include
// Функция, генерирующая случайное действительное число от min до max
double random(double min, double max)
{
return (double)(rand())/RAND_MAX*(max - min) + min;
}
int main()
{
srand((unsigned int)time(0));
cout << random(-1.235, 157.456) << endl;
return 0;
}
Здесь проверка.
Комментариев нет:
Отправить комментарий