Imported from ../bash-2.02.tar.gz.
This commit is contained in:
parent
e8ce775db8
commit
cce855bc5b
323 changed files with 33916 additions and 12321 deletions
74
examples/scripts/krand.bash
Executable file
74
examples/scripts/krand.bash
Executable file
|
|
@ -0,0 +1,74 @@
|
|||
# Originally
|
||||
#
|
||||
# From: bsh20858@news.fhda.edu (Brian S Hiles)
|
||||
# Newsgroups: comp.unix.shell
|
||||
# Subject: Re: getting random numbers
|
||||
# Date: 23 Jan 1997 23:27:30 GMT
|
||||
# Message-ID: <5c8s52$eif@tiptoe.fhda.edu>
|
||||
|
||||
# @(#) krand Produces a random number within integer limits
|
||||
# "krand" Korn shell script generates a random number in a
|
||||
# specified range with an optionally specified ``seed'' value.
|
||||
# Author: Peter Turnbull, May 1993
|
||||
# Modified by: Becca Thomas, January 1994
|
||||
|
||||
# changed the optional third argument to a -s option, converted to
|
||||
# bash v2 syntax -- chet@po.cwru.edu
|
||||
|
||||
PROGNAME=${0##*/}
|
||||
USAGE="usage: $PROGNAME [-s seed] lower-limit upper-limit"
|
||||
|
||||
Seed=$$ # Initialize random-number seed value with PID
|
||||
|
||||
usage()
|
||||
{
|
||||
echo ${PROGNAME}: "$USAGE" >&2
|
||||
}
|
||||
|
||||
errexit()
|
||||
{
|
||||
echo ${PROGNAME}: "$@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Process command-line arguments:
|
||||
while getopts "s:" opt; do
|
||||
case "$opt" in
|
||||
s) Seed=$OPTARG ;;
|
||||
*) usage ; exit 2;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
case $# in
|
||||
2) Lower=$1; Upper=$2 ;;
|
||||
*) usage ; exit 2;;
|
||||
esac
|
||||
|
||||
# Check that specified values are integers:
|
||||
expr "$Lower" + 0 >/dev/null 2>&1
|
||||
[ $? -eq 2 ] && { errexit "lower ($Lower) not an integer"; }
|
||||
expr "$Upper" + 0 >/dev/null 2>&1
|
||||
[ $? -eq 2 ] && { errexit "upper ($Upper) not an integer"; }
|
||||
expr "$Seed" + 0 >/dev/null 2>&1
|
||||
[ $? -eq 2 ] && { errexit "seed ($Seed) not an integer"; }
|
||||
|
||||
# Check that values are in the correct range:
|
||||
if (( "$Lower" < 0 )) || [ ${#Lower} -gt 5 ]; then
|
||||
errexit "lower limit ($Lower) less than zero"
|
||||
fi
|
||||
if (( "$Upper" > 32767 )) || [ ${#Upper} -gt 5 ]; then
|
||||
errexit "upper limit ($Upper) greater than 32767"
|
||||
fi
|
||||
if (( "$Seed" < 0 )) || (( "$Seed" > 32767 )) || [ ${#Seed} -gt 5 ]; then
|
||||
errexit "seed value ($Seed) out of range (0 to 32767)"
|
||||
fi
|
||||
(( "$Upper" <= "$Lower" )) && errexit "upper limit ($Upper) <= lower limit ($Lower)"
|
||||
|
||||
# Seed the random-number generator:
|
||||
RANDOM=$Seed
|
||||
# Compute value, scaled within range:
|
||||
let rand="$RANDOM % ($Upper - $Lower + 1) + $Lower"
|
||||
# Report result:
|
||||
echo $rand
|
||||
Loading…
Add table
Add a link
Reference in a new issue