#!/bin/bash # Array containing the Deck clear SPACE="#" declare -a INDEX declare -a DECK declare -a SHUFFLED_DECK # ===== Seeding random number generator with 2 methods ==== # == Method 1 - unsing process ID RANDOM=$$ # == Method 2 - # Pseudo-random output fetched # from /dev/urandom (system pseudo-random device-file), # then converted to line of printable (octal) numbers by "od", # finally "awk" retrieves just one number for SEED. SEED=$(head -1 /dev/urandom | od -N 1 | awk '{ print $2 }') RANDOM=$SEED # ================================================= SHUFFLE_COUNT=0 RANGE=52 I=0 SHUFFLE_COUNT=0 CLUBS=(AC.2C.3C.4C.5C.6C.7C.8C.9C.TC.JC.QC.KC.) DIAMONDS=(AD.2D.3D.4D.5D.6D.7D.8D.9D.TD.JD.QD.KD.) HEARTS=(AH.2H.3H.4H.5H.6H.7H.8H.9H.TH.JH.QH.KH.) SPADES=(AS.2S.3S.4S.5S.6S.7S.8S.9S.TS.JS.QS.KS.) DECK=(${CLUBS[*]}${DIAMONDS[*]}${HEARTS[*]}${SPADES[*]}) ALLCARDS=${DECK[*]} REST_OF_DECK=$ALLCARDS while [ $I -lt $RANGE ]; do # Pick a random number between 0 and $RANGE (0 - 52) # and multiply it by 3 to calculate $RAND_POSITION in the array DECK[*] RANDNUM=$[($RANDOM % $RANGE)] let RAND_POSITION=RANDNUM*3 # Draw a card from a RANDOM_POSITON in the deck DRAWN_CARD=${REST_OF_DECK:RAND_POSITION:3} SHUFFLED_DECK=($SHUFFLED_DECK$DRAWN_CARD) # Take the drawn card out of the deck REST_OF_DECK=${REST_OF_DECK/$DRAWN_CARD/} DECK=($REST_OF_DECK) clear echo $ALLCARDS echo echo ${DECK[*]} echo echo $SHUFFLED_DECK echo echo "Drawn Card : "$DRAWN_CARD echo "RANGE VAR :" $RANGE echo "RANDNUM :" $RANDNUM echo "POSITION :" $RAND_POSITION echo " I :" $I let RANGE=RANGE-1 # read x sleep .1s done let SHUFFLE_COUNT=SHUFFLE_COUNT+1