=ARRAY_CONSTRAIN(вашиДанные;1;1)
let arr = [0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0];
let p1 = arr.reduce((acc,val)=>acc+=val,0)/arr.length; // вероятность встретить 1
let p0 = 1 - p1; // вероятность встретить 0
let ratio10 = p1/p0; // Соотношение единиц к нулям
let ratio01 = p0/p1; // Соотношение нулей к единицам
=МАКС(FILTER($B:$B;$A:$A=$A$2))
=QUERY(QUERY(A:B;"SELECT A,MAX(B) WHERE A IS NOT NULL GROUP BY A";0);"SELECT * OFFSET 1";0)
/**
* Дублирует массив
* Telegram - @ProgrammerForever
*
* @param {Range} arr Массив
* @param {number} count Сколько раз дублировать. По умолчанию 1
* @param {boolean} isFilter Указывает, нужно ли фильтровать строки исходного массива
* @param {number} column Номер столбца по которому надо фильтровать строки. По умолчанию 1.
* @return Дублированный массив
* @customfunction
*/
function array_repeat(arr, count=1, isFilter, column=1) {
if (isFilter){
column = -1+column;
arr = arr.filter(row=>row[column]);
};
// Вариант 1
/*
let outData = [];
for(let i=0; i<=count; i++){
outData = [...outData, ...arr];
};
*/
// Вариант 2, должен работать шустрее
let outData = new Array(arr.length*count);
for(let i=0; i<=arr.length*count; i++){
outData[i]=arr[i%arr.length];
};
return outData;
}