R


Bash Programme Schlüsselbundversuch


Software


Basiswissen


Ein Programm simuliert einen Versuch der Stochastik. Dazu benutzt das Programm den Zufallsgenerator RANDOM.

Quellcode


#!/bin/bash
#
# Stand 29. März 2020
# Autor: Gunter Heim
#
# Das Programm simuliert ein Zufallsexperiment mit 6 Schlüsseln:
# Man hat 6 verschiedene Schlüssel. Nur einer passt auf ein Schloss.
# Man probiert der Reihe nach alle 6 Schlüssel aus, bis einer passt.
# Hat man den passenden Schlüssel, hört man mit dem Versuchen auf.
# Dieser Mikro-Versuch wird insgesamt

# Initalisierungen
versuchsanzahl=100
ausgabe=target # Ausgabedatei

# Falls Ausgabedatei schon vorhanden, diese erst löschen:
if [ -f $ausgabe ];then rm $ausgabe;fi

# Kopfzeile für die Ausgabedatei erzeugen:
echo 'Schlüsselbundversuch Simulation' >> $ausgabe
echo "" >> $ausgabe
echo "Daten eines Bash-Zufallsgenerators" >> $ausgabe
echo "" >> $ausgabe
echo '- Man hat insgesamt 6 Schlüssel für ein Schloss.' >> $ausgabe
echo '- Nur genau einer der Schlüssel passt auf das Schloss.' >> $ausgabe
echo '- Man probiert der Reihe nach jeden einzelnen Schlüssel aus.' >> $ausgabe
echo '- Man hört mit dem Probieren auf, wenn ein Schlüssel passt.' >> $ausgabe
echo -n '- Dieser Versuch wird insgesamt ' >> $ausgabe
echo -n "$versuchsanzahl" >> $ausgabe
echo 'mal wiederholt.' >> $ausgabe
echo '- Die Zahl eins steht für den richtigen Schlüssel.' >> $ausgabe
echo '- Wenn die 1 kommt, wird ein konkreter Probierlauf beendet.' >> $ausgabe
echo '- Siehe auch Schlüsselbundversuch' >> $ausgabe (externer Link)
echo "" >> $ausgabe
# Ende der Kopfzeile für die Ausgabedatei

# Schleife für Gesamtzahl von Versuchen, Laufvariable ist counter:
counter=1 # Counter ist die Anzahl der durchgeführten Versuche
while [ $counter -le $versuchsanzahl ];do

a=6 # Anzahl Schlüssel ist 6
number=0 # number ist gezogener Schlüssel
# Der Trefferschlüssel ist der Schlüssel Nummer 1
while [[ $a -ge 1 && $number -ne 1 ]];do # Alle 6 Schlüssel probieren bis 1 kommt
number=$(echo "scale=0;$RANDOM/(32767/$a)" | bc -l)
number=$((number+1))
echo -n $number " " >> $ausgabe
a=$(($a-1)) # Getester Schlüssel wird weggelegt
done # Bis letzter Schlüssel getestet wurde

echo "" >> $ausgabe
counter=$(($counter+1))
done # Bis zum Ende der Versuchsanzahl counter
echo "" >> $ausgabe
echo "Siehe auch" >> $ausgabe
echo "" >> $ausgabe
echo ">_$ausgabe" title="Der Begriff ist im Lexikon nicht vorhanden. Suche im Digitalen Wörterbuch der deutschen Sprache">Schlüsselbundversuch" >> $ausgabe (externer Link)
echo ">_$ausgabe" title="Der Begriff ist im Lexikon nicht vorhanden. Suche im Digitalen Wörterbuch der deutschen Sprache">Zufallsgenerator" >> $ausgabe (externer Link)
echo ">_$ausgabe" title="Der Begriff ist im Lexikon nicht vorhanden. Suche im Digitalen Wörterbuch der deutschen Sprache">Zufallsversuche" >> $ausgabe (externer Link)
echo ">_$ausgabe" title="Der Begriff ist im Lexikon nicht vorhanden. Suche im Digitalen Wörterbuch der deutschen Sprache">Bash Programme" >> $ausgabe (externer Link)
echo ">_$ausgabe" title="Der Begriff ist im Lexikon nicht vorhanden. Suche im Digitalen Wörterbuch der deutschen Sprache">Zufall" >> $ausgabe (externer Link)
echo ">_$ausgabe" title="Der Begriff ist im Lexikon nicht vorhanden. Suche im Digitalen Wörterbuch der deutschen Sprache">Bash" >> $ausgabe (externer Link)
echo "" >> $ausgabe

# Die erzeugte Ausgabedatei mit dem Programm "less" anzeigen:
less $ausgabe