Вы можете просто проверить, меньше ли случайное число, чем вероятность каждой категории, в порядке увеличения вероятности :
value = rand()
if value < p(A)
return A
if value < p(A)+p(B)
return B
if value < p(A)+p(B)+P(C)
return C
else
return D
Я не могу сказать вам лучший способ привести их в порядок, не зная больше о вашем коде. Если у вас есть только небольшое количество случаев, которые не будут меняться, это может быть проще всего один раз жестко закодировать его вручную, как я делал выше.
Редактировать: теперь, когда я думаю об этом, так как мы накапливаем вероятности, на самом деле не имеет значения, в каком порядке они находятся. Я соответственно скорректировал свой код.
Редактировать: думаю, именно так и работает randsample .