From 25194c1e5599f12eb4ce7f5baef6931bccbf5614 Mon Sep 17 00:00:00 2001 From: Sam Hadow Date: Wed, 5 Mar 2025 21:48:27 +0100 Subject: [PATCH] randint --- README.md | 4 ++++ randint.sh | 12 ++++++++++++ 2 files changed, 16 insertions(+) create mode 100755 randint.sh diff --git a/README.md b/README.md index 865ec4c..3e8bbde 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ My collection of useful shell scripts. +### randint.sh +usage: randint +print in the terminal a random integer x with $` 0 \leq x \lt \$1`$ + ### killwine.sh kill every wine process including processes hanging diff --git a/randint.sh b/randint.sh new file mode 100755 index 0000000..2450e19 --- /dev/null +++ b/randint.sh @@ -0,0 +1,12 @@ +#!/bin/bash +if ! [[ "$1" =~ ^[0-9]+$ ]]; then + echo "Usage: randint " + exit 1 +fi +number=$1 +ceiling=$(echo "l($number +1)/l(2)" | bc -l | awk '{ + bits = ($1 == int($1)) ? $1 : int($1) + 1; + print int( (bits + 7) / 8 ) +}') +random_num=$(xxd -p -l $ceiling /dev/urandom | tr -d '\n' | awk -v num="$number" '{print strtonum("0x" $0) % num}') +echo $random_num