Debian Direct VLC не имеет GUI

FWIW,

prob=$(echo "0.0139" | bc)

не нужно - вы можете просто сделать

prob=0.0139

Eg,

$ prob=0.0139; echo "scale=5;1/$prob" | bc
71.94244

Есть еще одна проблема с вашим кодом, помимо проблемы с переполнением. Арифметика Bash может быть неадекватной для обработки больших чисел в вашей функции nCk2. Например, на 32-битной системе передача 10 в эту функцию возвращает отрицательное число, -133461297271.

Чтобы справиться с проблемой неполного переполнения, вам нужно вычислять в большем масштабе, как упоминалось в других ответах. Для параметров, приведенных в ОП, достаточно масштаба от 25 до 30.

Я переписал ваш код, чтобы вся арифметика выполнялась в bc. Вместо того чтобы просто передавать команды в bc через echo, я написал полный сценарий bc как here document внутри сценария Bash, поскольку это упрощает передачу параметров из Bash в bc.

#!/usr/bin/env bash

# Binomial probability calculations using bc
# Written by PM 2Ring 2015.07.30

n=144
p='1/72'
m=16
scale=30

bc << EOF
define ncr(n, r)
{
    auto v,i

    v = 1
    for(i=1; i<=r; i++)
    {
        v *= n--
        v /= i
    }
    return v
}

define binprob(p, n, r)
{
    auto v

    v = ncr(n, r)
    v *= (1 - p) ^ (n - r)
    v *= p ^ r
    return v
}

sc = $scale
scale = sc
outscale = 8

n = $n
p = $p
m = $m

for(i=0; i<=m; i++)
{
    v = binprob(p, n, i)
    scale = outscale
    print i,": ", v/1, "\n"
    scale = sc
}
EOF

output

0: .13345127
1: .27066174
2: .27256781
3: .18171187
4: .09021610
5: .03557818
6: .01160884
7: .00322338
8: .00077747
9: .00016547
10: .00003146
11: .00000539
12: .00000084
13: .00000012
14: .00000001
15: 0
16: 0

0
14.09.2018, 14:52
1 ответ

Попробуйте установить пакет phonon -backend -vlc.

0
28.01.2020, 04:13

Теги

Похожие вопросы