Вот еще одна идея: для каждой строки вы можете сгенерировать 7 случайных чисел (от 0 до 1) и рассматривать их как свои «интервальные» местоположения - другими словами, в ваших 8 случайных числах, которые составляют 1, это ваши частичныесуммы.Затем вы можете отсортировать их и взять различия, чтобы получить результирующие случайные числа.Вот код для того, что я думаю:
numrows = 100;
partialsums = [zeros(numrows,1), rand(numrows,7), ones(numrows,1)];
partialsums = sort(partialsums, 2);
randmat = diff(partialsums, 1, 2);
Распределение чисел будет отличаться в зависимости от того, как вы это делаете.Я сравнил этот метод с тем, который опубликовал Aabaz, и получил его для дистрибутивов.
![enter image description here](https://i.stack.imgur.com/mhez1.png)
Так что мой метод выглядит немного более экспоненциальным, вы получаете более высокие значения, и егонемного более равномерно, но с меньшим срезом случайных чисел, которые вы получаете.