Вопрос задан 16.02.2019 в 01:49. Предмет Информатика. Спрашивает Кашин Евгений.

Написать программу в с++, определяющую, какое число чаще других встречается в последовательности

целых случайных чисел. Для генерации чисел использовать линейный конгруэнтный метод.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Неверовский Артём.
#include <iostream>
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;
}
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

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

Линейный конгруэнтный метод

Линейный конгруэнтный метод - это один из методов генерации псевдослучайных чисел. Он основан на рекуррентном соотношении, которое генерирует последовательность чисел. Формула для генерации чисел в этом методе выглядит следующим образом:

``` Xn+1 = (a * Xn + c) % m ```

где: - `Xn` - текущее число в последовательности - `Xn+1` - следующее число в последовательности - `a`, `c`, `m` - параметры метода, которые нужно выбрать

Программа на C++

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

```cpp #include #include #include #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 sequence; // Последовательность случайных чисел int previousNumber = std::rand(); // Первое случайное число

// Генерация последовательности из 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++ для генерации последовательности случайных чисел с использованием линейного конгруэнтного метода и определения наиболее часто встречающегося числа в этой последовательности.

0 0

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

Последние заданные вопросы в категории Информатика

Задать вопрос