Другие языки программирования и технологии

Запишите функцию для получения случайного числа x из промежутка: [0; 15) [0; 15] [-15; 15) [10; 15)

Запишите функцию для получения случайного числа x из промежутка:
[0; 15)
[0; 15]
[-15; 15)
[10; 15)
#include <iostream>
#include <ctime>
using namespace std;
bool random(int &, const int, int, bool = false);
int main() {
    srand(unsigned(time(NULL)));
    int n = 0;
    if (random(n, 0, 15))       cout << "[0; 15)   -> " << n << endl;
    if (random(n, 0, 15, true)) cout << "[0; 15]   -> " << n << endl;
    if (random(n, -15, 15))     cout << "[-15; 15) -> " << n << endl;
    if (random(n, 10, 15))      cout << "[10; 15)  -> " << n << endl;
    cin.get();
    return 0;
}
bool random(int & _n, const int _l, int _r, bool _f) {
    if (_f) ++_r;
    if (_l >= _r) return false;
    if (_l < 0 && _r >= 0) _r += abs(_l);
    else if (_l < 0 && _r < 0) _r = abs(_l) - abs(_r);
    else if (_l >= 0 && _r > 0) _r -= _l;
    _n = rand() % _r + _l;
    return true;
}
Сергей Николаевич
Сергей Николаевич
80 117
Лучший ответ
Случайное число на промежутке [a;b) может быть получено, например, по формуле
x = a + (b-a)*random
random - случайное число, равномерно распределенное на промежутке [0;1).
А вообще.. . Какие числа нужны: целые или вещественные? И на каком языке?
Евгений Чубко
Евгений Чубко
62 663
#include
#include
using namespace std;
bool random(int &, const int, int, bool = false);
int main() {
srand(unsigned(time(NULL)));
int n = 0;
if (random(n, 0, 15)) cout << "[0; 15) -> " << n << endl;
if (random(n, 0, 15, true)) cout << "[0; 15] -> " << n << endl;
if (random(n, -15, 15)) cout << "[-15; 15) -> " << n << endl;
if (random(n, 10, 15)) cout << "[10; 15) -> " << n << endl;
cin.get();
return 0;
}
bool random(int & _n, const int _l, int _r, bool _f) {
if (_f) ++_r;
if (_l >= _r) return false;
if (_l < 0 && _r >= 0) _r += abs(_l);
else if (_l < 0 && _r < 0) _r = abs(_l) - abs(_r);
else if (_l >= 0 && _r > 0) _r -= _l;
_n = rand() % _r + _l;
return true;
}
Нурик 888
Нурик 888
304
x=(b-1) + random(a-1); это на Pascal

int x=(b-1) + (int)(Math.random*a-1); это на Java

int x = a + (b.0 / (MAX_RAND + 1)) * rand(); это C++ (b.0 это значит надо записать число с плавающей точкой, например 15.0)

какой язык интересует?

Похожие вопросы