#!/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