Сгенерировать рандомное число от 100000 до 1000000. Есть наработка, но проблема в том, что число постоянно генерируется от 100000 до 170000, а 345956 или 742322 никогда не бывает. Подскажите, что не так я реализовал.
srand(time(NULL));
const int MIN = 100000;
const int MAX = 1000000;
int desiredNumber = rand() % 9 + 1;
int generateNumber = rand() % (MAX - MIN) + MIN;
int generatedNumber = 0;
int numberCoincidences = 0;
generatedNumber = generateNumber;
while (generateNumber)
{
int temp = generateNumber % 10;
if (temp == desiredNumber)
{
numberCoincidences++;
}
generateNumber = (generateNumber - temp) / 10;
}
if (numberCoincidences)
{
cout << "Numeric " << desiredNumber << " in number " << generatedNumber << " is found " << numberCoincidences << " times\n";
}
else
{
cout << "Numeric " << desiredNumber << " in number " << generatedNumber << " does not occur\n";
}
Не стоит использовать rand()
- обычно у него "размах" не слишком велик, посмотрите, чему равно RAND_MAX
в вашей системе. В результате, если это значение меньше требуемого диапазона - ваш метод просто не будет работать.
Раз уж вы работаете на C++, то генерируйте эти значения с учетом возможностей <random>
(см. тут):
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<> dis(100000, 1000000);
for (int n = 0; n < 50; ++n)
cout << dis(gen) << '\n';
}
RAND_MAX обычно равно 32767. Для генерации чисел в большем диапазоне можете использовать следующую конструкцию:
srand(time(NULL));
const int MIN = 100000;
const int MAX = 1000000;
int desiredNumber = rand() % 9 + 1;
int generateNumber = (rand() % 9) +
10*(rand() % 9) +
100*(rand() % 9) +
1000*(rand() % 9) +
10000*(rand() % 9) +
100000*(rand() % 9 + 1);
int generatedNumber = 0;
int numberCoincidences = 0;
generatedNumber = generateNumber;
while (generateNumber)
{
int temp = generateNumber % 10;
if (temp == desiredNumber)
{
numberCoincidences++;
}
generateNumber = (generateNumber - temp) / 10;
}
if (numberCoincidences)
{
cout << "Numeric " << desiredNumber << " in number " << generatedNumber << " is found " << numberCoincidences << " times\n";
}
else
{
cout << "Numeric " << desiredNumber << " in number " << generatedNumber << " does not occur\n";
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
возникла задача написать TCP клиент, который будет посылать запросы на сервер через прокси, вроде всё сделал, но так и не понял как отправлять...
Даны два двузначных числа А и ВИз этих чисел составили 2 четырехзначных числа: первое число получили путем написания сначала числа А, затем...
Перевожу string в intВсе работает, но затем кидает ошибку
Проблема в том, что в консоли ничего не выводится(Не уверен что сделал правильно)