<!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;
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.