Добрый вечер!
Ваш код работает следующим образом: он генерирует случайное целое число в диапазоне между `st` (160000) и `en` (300000), а затем делит его на 10000, чтобы получить значение переменной `x1`. Ваша текущая реализация использует функцию `rand()` для генерации случайного числа, и, может быть, вызывает недопонимание в том, как распределяются значения.
При использовании `rand()` и целых чисел, диапазон значений, который вы получаете, определяется случайными числами от 160000 до 300000. Когда вы делите это число на 10000, результат будут, соответственно, в диапазоне от 16 до 30.
Если вы хотите получать значений 20 или 24, то вы можете явно задать диапазон для генерации случайных чисел.
Вот исправленный код, который генерирует случайное значение в необходимых пределах. Я добавлю переменную `min` и `max`, чтобы вы могли установить желаемый диапазон:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
cout << "Влага = 0,03: " << endl;
srand(static_cast<unsigned int>(time(0)));
int st = 200000; // Минимальное значение (например, 200000)
int en = 240000; // Максимальное значение (например, 240000)
float x = (rand() % (en - st + 1) + st);
float x1 = x / 10000; // Теперь это будет от 20 до 24
cout << "Вес бюксы 1 = " << x1 << endl;
return 0;
}
```
В этом случае `st` установлено на 200000, а `en` на 240000, так что выдаваемые вами значения для `x1` будут находиться в диапазоне от 20 до 24.
Обратите внимание, что `rand()` генерирует числа, основываясь на алгоритме с псевдослучайными числами, и диапазон будет включать числа только от 200000 до 240000, что дает вам в итоге `x1` от 20 до 24 при делении на 10000. Вы можете изменить значения `st` и `en`, чтобы подстроить код под свои нужды!