dimecres, 16 de desembre del 2009

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
Am 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.

 

Posted via web from jrosell's posterous

Cap comentari:

Publica un comentari a l'entrada