|

楼主 |
发表于 2003-12-28 01:34:40
|
显示全部楼层
最初由 bouzouki 发表
head -c10 /dev/urandom | od -t u1 -A d -w1|sort -k2|tail -n10|cut -f1 -d' '
就算基本上可以达到要求吧
当然~~,可是我认为最牛的还是r2007兄的脚本
最初由 r2007 发表
另外一个思路
r2007@www r2007 $ n=26
r2007@www r2007 $ a=($(for ((i=1;i<=$n;i++));do echo "$i $RANDOM";done|sort -k2n|cut -d" " -f1))
r2007@www r2007 $ echo ${a}
17 4 26 19 2 5 16 21 22 20 11 6 23 8 25 24 12 7 13 14 1 3 18 15 10 9
r2007@www r2007 $
我好歹也交卷吧~~,虽然脚本烂了些~~  - [/home/javalee/myshell]cat newrand
- #!/bin/ksh
- #创建随机数组
- #要导出的环境,用dot命令
- #脚本开始
- #初始化空数组array.
- set -A array
- #初始化数组下标.
- i=0
- #开始主循环.
- while true;do
- #产生随机数.
- rand=$(perl -e "print int rand($(($1+1)))")
- [[ $rand -eq 0 ]] && continue
- #向数组array中添加不重复的元素.
- if ! echo ${array[*]}|tr ' ' '\n'|grep -q "\<$rand\>";then
- array[$i]=$rand
- ((i+=1))
- else
- continue
- fi
- #当数组array元素个数满足条件,跳出循环.
- ((${#array[*]}==$1)) && break
- done
- #导出数组.
- export var=${array[*]}
- set -A array $(echo $var);echo ${array[*]}
- #脚本结束,取消脚本中无用变量
- unset i rand var
复制代码 测试:[/home/javalee/myshell]typeset|grep array
[/home/javalee/myshell]. newrand 50
33 37 19 2 14 12 25 21 43 34 47 13 30 40 26 50 32 15 23 41 18 28 49 44 27 38 45 48 8 5 24 4 11 46 16 1 17 42 29 6 10 39 3 22 9 20 31 35 7 36
[/home/javalee/myshell]typeset|grep array
typeset array
[/home/javalee/myshell]echo ${array}
33 37 19 2 14 12 25 21 43 34 47 13 30 40 26 50 32 15 23 41 18 28 49 44 27 38 45 48 8 5 24 4 11 46 16 1 |
|