Выражение для количества элементов в матрице с вероятностью p% наличия элемента в каждой позиции

Я работаю над разреженным матричным проектом для курса программирования. Чтобы доказать, что наш проект работает, мы должны показать, что он может обрабатывать добавление двух матриц 1000x1000 вместе, которые соответствуют следующим критериям.

Each element in each matrix has a 5% chance of being a 1, otherwise it is a 0.

Мой текущий метод построения одной из этих матриц показан в следующем псевдокоде:

p = .05
loop M from 0 to 1000 {
    loop N from 0 to 1000 {
        diceRoll = generate random number between 0. and 1.
        if (diceRoll < p){
            Matrix[M][N] = 1
        }
    }
}

Я считаю, что я мог бы сделать это более эффективным способом, определив, сколько единиц должно быть в матрице, а затем случайным образом разместив их по всему. например. матрица 1000x1000 должна иметь примерно 5% ее пробелов с единицами, что означает 1 000 000 * .05 = 50 000 единиц.

Тем не менее, первый метод не всегда дает матрицу с точно 5% единиц; обратите внимание, что теоретически он может дать матрицу, полную нулей, или матрицу, полную единиц.

Как я могу сделать выражение, чтобы определить (или приблизить) количество единиц в матрице, учитывая размеры и p?

0 ответов

Другие вопросы по тегам