N??mero aleatori dins d’un rang amb bash

Els sistemes linux i unix (Solaris i Mac) tenen un generador pseudo-aleatori del sistema /dev/urandom
La idea es convertir en números i agafar-ne un com a base aleatoria per escollir el número definitiu. Amb un petit cálcul podem tenir un mínim i un maxim i així aconseguim el número dins un rang.

El ‘shell script’ seria una cosa així

#!/bin/bash
SEED=$(head -1 /dev/urandom | od -N 1 | awk ‘{ print $2 }’)
RANDOM=$SEED
MIN=$1
MAX=`expr $2 + 1 `
echo “$MIN + ($RANDOM % ($MAX – $MIN))” | bc
exit 0

Exemple

Volem un numero aleatori entre 100 i 2000
$ ./random-betweet.sh 100 2000
1990
Ens dona 1990 com a resultat.

 

Anuncis

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

Connecting to %s


%d bloggers like this: