#!/bin/bash #==BEGIN Function Definitions== randFloat() { # Desc: Output random float # Usage: randFloat arg1 # Inputs: arg1: number of decimal places # Output: stdout: float as decimal string # Version: 0.1.1 # Note: Outputs float from 0.000... to 0.999... # Note: Default number of decimals is 5. # Ref/Attrib: Integer test regular expression https://stackoverflow.com/a/806923 # Validate input if [[ $# -eq 0 ]]; then : # do nothing elif [[ $# -eq 1 ]]; then arg1=$1; RETEST1='^[0-9]+$' if ! [[ $arg1 =~ $RETEST1 ]]; then echo "ERROR:Not an integer." >&2; exit 1; fi; else echo "ERROR:Invalid number of arguments:${*}"; fi; # Produce output decimals="$(head -c "${arg1:-5}" < <(LC_ALL=C tr -cd "[:digit:]" < <(cat /dev/urandom)))"; printf "0.%s\n" "$decimals"; }; # output random float [0.00000 1.00000] to stdout #==END Function Definitions== #==BEGIN sample code== time randFloat; dec=5 time randFloat; dec=70 time randFloat; time (randFloat && randFloat && randFloat && randFloat && randFloat && randFloat && randFloat && randFloat && randFloat && randFloat); time (randFloat "$dec" && randFloat "$dec" && randFloat "$dec" && randFloat "$dec" && randFloat "$dec" && randFloat "$dec" && randFloat "$dec" && randFloat "$dec" && randFloat "$dec" && randFloat "$dec"); time (randFloat "$dec" &>/dev/null && randFloat "$dec" &>/dev/null && randFloat "$dec" &>/dev/null && randFloat "$dec" &>/dev/null && randFloat "$dec" &>/dev/null && randFloat "$dec" &>/dev/null && randFloat "$dec" &>/dev/null && randFloat "$dec" &>/dev/null && randFloat "$dec" &>/dev/null && randFloat "$dec" &>/dev/null); #==END sample code==