2025-04-23 - probcalc20250416.sh

#!/bin/bash

# Propability Calculation Excersize Programm v1.0
# (C) David Vajda
# 2025-04-16
stdk=10
stdnevents=9

echo "Propability Calculation Excersize Programm v1.0"
echo "(C) David Vajda"
echo "2025-04-1"
date

if [[ -n "$1" && "$1" == "--dice" ]]
then
    k=6
    notnumflag=0
else
    if [ -z $1 ]
    then
        k=$stdk
        notnumflag=0
    else
        i=0
        populationOfAllPossibleElementaryEvents=()
        populationOfAllPossibleElementaryEvents+=($@)
        while [ $i -lt $# ]
        do
            echo "${populationOfAllPossibleElementaryEvents[$i]}"
            i=$(($i+1))
        done
        notnumflag=1
        k=$i
    fi
fi

nevents=$stdnevents

n=128
i=0
sample=()
echo -ne "sample := {"
while [ $i -lt $n ]
do
    x=$((1 + $RANDOM % $k))
    sample+=($x)
    if [ $notnumflag -eq 0 ]
    then
        echo -ne $x", "
    else
        echo -ne  "${populationOfAllPossibleElementaryEvents[$x-1]}, "
    fi
    i=$(($i+1))
done
echo -ne $((1 + $RANDOM % $k))
echo "}"

i=0
eventconsumedcounter=0
nmevents=()
while [ $i -lt $nevents ]
do
    x=($((1 + $RANDOM % ($nevents/2))))
    nmevents+=($x)
    eventconsumedcounter=$(($eventconsumedcounter+$x))
    if [ $eventconsumedcounter -ge $nevents ]
    then
        break
    fi
    i=$(($i+1))
done

#i=0
#while [ $i -lt $nevents ]
#do
#    echo "${nmevents[$i]}"
#    i=$(($i+1))
#done


eventquantity=()
i=0
l=0
while [ $i -lt $nevents ]
do
    j=0
    while [ $j -lt $((${nmevents[$l]})) ]
    do
        q=0
        echo -ne "E$(($i+$j)) := {"
        y=0
        event=()
        while [ $q -le $(($l)) ]
        do
            if [ $y -ge $k ]
            then
                break
            fi
            y=$((1 + $RANDOM % ($k-$y) + $y))
            event+=($y)
            echo -ne $y", "
            q=$(($q+1))
        done
        if [ $y -lt $k ]
        then
            y=$((1 + $RANDOM % ($k-$y) + $y))
            echo "$y}"
        else
            echo "}"
        fi
        echo "${event[@]}"
        events+=(${event[@]} 0)
        j=$(($j+1))
    done
    i=$(($i+$j))
    l=$(($l+1))
    echo "${events[@]}"


    i=0
    absoluteFrequencyS=()
    while [ 1 ]
    do
        q=0
        absoluteFrequency=0
        while [ $q -lt $n ]
        do
            j=0
            while [ "${events[$(($i+j))]}" == "$((0))" ]
            do
                j=$(($j+1))
                if [ "${sample[$(($q))]}" == "${events[$(($i+$j))]}" ]
                then
                    absoluteFrequency=$(($absoluteFrequency+1))
                fi
            done
            q=$(($q+1))
        done
        if [ "${events[$i+$j+1]}" == 0 ]
        then
            break
        fi
        i=$(($i+$j+1))
        absoluteFrequencyS+=($absoluteFrequency)
    done
    echo ${absoluteFrequency[@]}
done