
Написать программу в с++, определяющую, какое число чаще других встречается в последовательности
целых случайных чисел. Для генерации чисел использовать линейный конгруэнтный метод.

Ответы на вопрос

using namespace std;
const int n = 15;
double congruential(int &x) // функция генерации псевдослучайных чисел
{
const int m = 100, // генерация псевдослучайных чисел в диапазоне
значений от 0 до 100 (выбирается случайно m > 0)
a = 8, // множитель (выбирается случайно 0 <= a <= m)
inc = 65; // инкрементирующее значение (выбирается случайно 0
<= inc <= m)
x = ((a * x) + inc) % m; // формула линейного конгруэнтного метода
генерации псевдослучайных чисел
return (x / double(m));
}
int main()
{
double arr[n];
double num, frq, max_frq;
int x0 = 20;
for (int i=0; i<n; i++) {
arr[i] = congruential(x0);
cout << arr[i] << " ";
}
num = arr[0];
max_frq = 1;
for (int i=0; i < n-1; i++) {
frq = 1;
for (int k = i+1; k<n; k++)
if (arr[i] == arr[k])
frq += 1;
if (frq > max_frq) {
max_frq = frq;
num = arr[i];
}
}
cout << endl;
if (max_frq > 1)
cout << max_frq << " : " << num << endl;
else
cout << "All uniqum" << endl;
return 0;
}



Для решения данной задачи вам потребуется написать программу на языке C++, которая будет генерировать последовательность случайных целых чисел и определять, какое число чаще всего встречается в этой последовательности. Для генерации случайных чисел вы можете использовать линейный конгруэнтный метод.
Линейный конгруэнтный метод
Линейный конгруэнтный метод - это один из методов генерации псевдослучайных чисел. Он основан на рекуррентном соотношении, которое генерирует последовательность чисел. Формула для генерации чисел в этом методе выглядит следующим образом:``` Xn+1 = (a * Xn + c) % m ```
где: - `Xn` - текущее число в последовательности - `Xn+1` - следующее число в последовательности - `a`, `c`, `m` - параметры метода, которые нужно выбрать
Программа на C++
Вот пример программы на языке C++, которая реализует генерацию последовательности случайных чисел с использованием линейного конгруэнтного метода и определяет, какое число чаще всего встречается в этой последовательности:```cpp
#include
// Функция для генерации случайных чисел с использованием линейного конгруэнтного метода int generateRandomNumber(int previousNumber) { int a = 1103515245; // параметр a int c = 12345; // параметр c int m = 2147483648; // параметр m
return (a * previousNumber + c) % m; }
int main() { std::srand(std::time(nullptr)); // Инициализация генератора случайных чисел
std::vector
// Генерация последовательности из 100 случайных чисел for (int i = 0; i < 100; i++) { int randomNumber = generateRandomNumber(previousNumber); sequence.push_back(randomNumber); previousNumber = randomNumber; }
// Определение, какое число чаще всего встречается в последовательности std::sort(sequence.begin(), sequence.end()); // Сортировка последовательности int currentNumber = sequence[0]; int maxCount = 1; int currentCount = 1;
for (int i = 1; i < sequence.size(); i++) { if (sequence[i] == currentNumber) { currentCount++; } else { if (currentCount > maxCount) { maxCount = currentCount; currentNumber = sequence[i - 1]; } currentCount = 1; } }
// Вывод результата std::cout << "Наиболее часто встречающееся число: " << currentNumber << std::endl;
return 0; } ```
В этой программе мы используем функцию `generateRandomNumber`, которая реализует линейный конгруэнтный метод для генерации случайных чисел. Затем мы генерируем последовательность из 100 случайных чисел и определяем, какое число чаще всего встречается в этой последовательности.
Обратите внимание, что параметры `a`, `c` и `m` в функции `generateRandomNumber` могут быть выбраны различными значениями в зависимости от требуемых характеристик генерируемой последовательности случайных чисел. В данном примере использованы значения, которые обеспечивают достаточно хорошую случайность чисел.
Заключение
Таким образом, вы можете использовать приведенную программу на языке C++ для генерации последовательности случайных чисел с использованием линейного конгруэнтного метода и определения наиболее часто встречающегося числа в этой последовательности.

Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili