<!DOCTYPE html><html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width" />
  <title>split</title>
  <link rel="stylesheet" href="style.css" />
</head>
<body>
  <h1>split</h1>
  <div id="test"></div>


<button id="reload">Reload</button>

</body>
</html>
nav {
font-size: 22px;
text-decoration: underline;
}

body {
width: 100%;
max-width: 1000px;
height: 100%;
}

div {
padding-top: 10px;
}
// обработчик события нажатий кнопки
document.getElementById('reload').onclick = function() {
    // запускаем 5 прогонов, в каждом генерируя по 100 случайных величин
    const amount = 5;
    const numbers = 100;
    const min = 0;
    const max = 10;

    const result = reloadBF(amount, numbers, min, max);
    //console.log("result:",result);

    // формируем отчет
    let str = "<hr>Количество прогонов: " + amount + "<br>\n" +
        "Количество чисел в прогоне: " + numbers + "<br>\n" +
        "Интервал генерации случаных значений: [" + min + ":" + max + "]<br>\n<hr>\n";

    str += "Результаты каждого прогона:<br>\n";
    result.list.forEach((item, index) => {
        str += (index+1) + ". <b>" + item.text + "</b> <i>" + JSON.stringify(item.result) + "</i><br>\n";
    });
    str += "<hr>\nОбщие результаты:<br>\n" +
        "<b>" + result.text + "</b>";

    // выводим результаты
    const test = document.getElementById('test');
    test.innerHTML = str;

    //display.innerHTML = sorts;
    //test.innerHTML = i + " : " + massive[i];
    //test = document.getElementById('test' + i);
    //const display = document.getElementById('test');
    //const final = document.getElementById('final'); // суда записываем наибольшие числа с каждого прогона

}


// функция для сортировки от меньшего к большеиу
function compare(a, b) {
    return a - b;
}

// Для генерации массива из amount случайных значений, распределенных от min до max
function randomList(amount, min, max) {
    const list = [];
    for (let i = 0; i < amount; i++) {
        const r = min + Math.floor(Math.random() * (max - min));
        list[i] = min + Math.floor(Math.random() * (max - min));
    }
    //console.log("list: ", list);
    return list;
}

// делает amount прогонов, на каждом генерируя по numbers чисел вычисляя
// наиболее часто повторяющиеся в каждом прогоне, и в результатах всех прогонов
function reloadBF(amount, numbers, min, max) {
    // создаем объект в который запишем результаты прогонов
    const ret = {
        list: [], // результаты прогонов
        max: undefined, // число с максимальным количеством повторений за все проходы
        maxvalue: undefined, // количество его повторений
        text: "" // техт 1:17 или 2:13 или т.п.
    };
    // amount раз прогоняем цикл
    for (let o = amount; o > 0; o--) {
        // генерируем 100 случайных значений в интервале от 0 до 10
        const arr = randomList(numbers, min, max);

        // создаем промежуточный ассоциативный массив 
        // для записи результатов подсчета повторений
        // генерируемых значений
        const res = {};

        // считаем количество повторений и записываем их в res
        arr.forEach(item => {
            //console.log("item:", item);
            res[item] = res[item] ? res[item] + 1 : 1;
        });

        // вычисляем число с максимальным количеством повторений
        const largest = Object.keys(res).reduce(function(r, a, i) {
            return !i || res[r] < res[a] ? a : r;
        }, undefined);

        // сохраняем результаты прогона
        ret.list.push({
            source: arr.sort(compare),
            result: res, // результат подсчета повторений всех чисел сгенерированных в проходе
            max: largest, // число с максимальным количеством повторений в проходе
            maxvalue: res[largest], // количество его повторений
            text: largest + ":" + res[largest] // тест 1:17 или 2:13 или т.п.
        });
    }

    // вычисляем число с максимальным количеством повторений
    // из максимальных результатов всех прогонов
    const largest = ret.list.reduce(function(r, a, i) {
        return !i || r.maxvalue < a.maxvalue ? a : r;
    }, undefined);

    // сохраняем вычисленные результаты в ret
    ret.max = largest.max;
    ret.maxvalue = largest.maxvalue;
    ret.text = largest.max + ":" + largest.maxvalue;

    // возвращаем вычисленные результаты
    return ret;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.