задачки: вероятностный анализ
имеется массив m размером n, заполненый случайными величинами, так что в массиве не существует 2х и более равных элементов
есть функция
int f() {
int s=1;
double t=m[0]
for ( int i=1;i<n;i++ ) {
if (t<m[i]) {
s++;
t=m[i]
}
return s;
}
проще говоря фукнция инкрементирует результат каждый раз когда встречает в массиве число, большее всех предыдущих и первое число ( m[0] ) считается большим по определению
правильно ли я расчитал, что вероятности f() == 1 и f() == 2 равны 1\n ?
/* вероятность f()==2, походу есть сумма вероятностей 2х независимых событий
первое: что второй по величине элемент окажется в 0 позиции - равно 1\n
второе: что после элемента в 0 позиции, чья pos() допустим == i, будут следовать элементы чья pos() < i до тех пор пока не встретится максимальный элемент ...
не является ли первое событие частным случаем второго?
если нет, то как их просуммировать?
- next day */
вероятность f() == n равна 1\n**n ?
в расчетах пришлось оперировать величиной ==
double xxx(unsigned int a) {
double s=0;
for(int i=1;i<=a;i++) s+= double(1)/double(i);
return s;
}
есть ли в математике какое-нибудь обозначение xxx(n) ?
сколько в среднем пар типа { m[i1]>m[i2] при 0<=i1<i2<n } можно ожидать в массиве m[n] ?
правильна ли формула расчета числа таких пар для конкретного ( проинициализированного ) массива m[n] :
m1=m;
sort(m1);
int pos(double el) {
for( int i =0;i<n;i++) if( el == m1[i] ) return i;
}
int count() {
int s=0;
for ( int i=0;i<n;i++) {
if ( pos(m[i])>i ) s+=pos(m[i])-i;
}
return s;
}