m=$1
output=$2
out=()
for ((i=1;i<=m;i++));do
out+=($((RANDOM%29+2)))
[ $((i%3)) -eq 0 ] && echo ${out[*]} >>$output && out=()
done
[ "$out" ] && echo ${out[*]} >>$output
RANDOM%29
2 30 :
$RANDOM 0 32767, :
for ((i=0;i<32768;i++)) ;do
((RL[$((i%29+2))]++))
done
for ((i=0;i<32;i++));do
printf "%3d %5d\n" $i ${RL[i]}
done | column
0 0 7 1130 14 1130 21 1130 28 1130
1 0 8 1130 15 1130 22 1130 29 1129
2 1130 9 1130 16 1130 23 1130 30 1129
3 1130 10 1130 17 1130 24 1130 31 0
4 1130 11 1130 18 1130 25 1130
5 1130 12 1130 19 1130 26 1130
6 1130 13 1130 20 1130 27 1130
, 1130 2 28, 1129 29 30.
, :
random2to30() {
local _random=32
while [ $_random -gt 28 ] ;do
_random=$((RANDOM & 2
done
printf -v $1 "%d" $((2+_random))
}
:
tstr2to30() {
unset $1
local _random=32
while [ $_random -gt 28 ] && read _random ;do
_random=$((_random& 2
done
[ "$_random" ] && printf -v $1 "%d" $((2+_random))
}
unset RL
while tstr2to30 MyRandom && [ "$MyRandom" ] ;do
((RL[MyRandom]++))
done < <(seq 0 32767)
for ((i=0;i<32;i++));do
printf "%3d %5d\n" $i ${RL[i]}
done | column
Give:
0 0 7 1024 14 1024 21 1024 28 1024
1 0 8 1024 15 1024 22 1024 29 1024
2 1024 9 1024 16 1024 23 1024 30 1024
3 1024 10 1024 17 1024 24 1024 31 0
4 1024 11 1024 18 1024 25 1024
5 1024 12 1024 19 1024 26 1024
6 1024 13 1024 20 1024 27 1024
(1024) .
script
, script ( bash shebang!):
#!/bin/bash
m=${1:-11}
output=${2:-/dev/stdout}
c=${3:-3}
random2to30() {
local _random=32
while [ $_random -gt 28 ] ;do
_random=$((RANDOM & 2
done
printf -v $1 "%d" $((2+_random))
}
out=()
for ((i=1;i<=m;i++));do
random2to30 MyRandom
out+=($MyRandom)
[ $((i%c)) -eq 0 ] && echo ${out[*]} >>"$output" && out=()
done
[ "$out" ] && echo ${out[*]} >>"$output"