Матрица 10x10 содержит «правдоподобия» для любой ячейки, выбранной в данной строке во время розыгрыша.
id1 id2 id3 id4 id5 id6 id7 id8 id9 id10
id1 NA 0.5 0.7 0.5 0.5 0.4 0.4 0.4 0.4 0.4
id2 0.5 NA 0.5 0.5 0.5 0.4 0.4 0.4 0.4 0.4
id3 0.7 0.5 NA 0.5 0.5 0.4 0.4 0.4 0.4 0.4
id4 0.5 0.5 0.5 NA 0.5 0.4 0.4 0.4 0.4 0.4
id5 0.5 0.5 0.5 0.5 NA 0.4 0.4 0.4 0.4 0.4
id6 0.4 0.4 0.4 0.4 0.4 NA 0.5 0.7 0.5 0.5
id7 0.4 0.4 0.4 0.4 0.4 0.5 NA 0.5 0.5 0.5
id8 0.4 0.4 0.4 0.4 0.4 0.7 0.5 NA 0.5 0.5
id9 0.4 0.4 0.4 0.4 0.4 0.5 0.5 0.5 NA 0.5
id10 0.4 0.4 0.4 0.4 0.4 0.5 0.5 0.5 0.5 NA
Каждый розыгрыш выполняется строкой, и вероятность выбора ячейки является значениемэтой ячейки, деленная на сумму всех значений ячейки в данной строке.Например, мне нужно выбрать ячейку от id2
до id10
в строке id1
.Наиболее вероятный выбор - id3
, поскольку его значение 0.7
является самым высоким в строке.
Мне нужен вектор с именем result
, в котором сохраняется выбор для каждой строки после выбора.Мой текущий план состоит в том, чтобы:
- суммировать по строкам и сохранить результаты в виде вектора
denom
- создать случайную равномерную переменную между 0 и этой суммой для каждой строки
- если значение находится в диапазоне от 0,0 до 0,5, выбранный человек в строке 1 равен id2;если 0.51-1.20, выбранный человек - id3 ... и т. д.
Это, очевидно, слишком много работы.Что может быть лучше для выборки с весами, игнорируя значения NA по диагонали?