Swi*_*ick 16 random bash shell
如何打印值1,2或3(随机).我最好的猜测失败了:
#!/bin/bash
1 = "2 million"
2 = "1 million"
3 = "3 million"
print randomint(1,2,3)
Run Code Online (Sandbox Code Playgroud)
cod*_*ict 28
要使用bash生成随机数,请使用$RANDOM
内部Bash函数:
arr[0]="2 million"
arr[1]="1 million"
arr[2]="3 million"
rand=$[ $RANDOM % 3 ]
echo ${arr[$rand]}
Run Code Online (Sandbox Code Playgroud)
从RANDOM的bash手册:
每次引用此参数时,都会生成0到32767之间的随机整数.可以通过向RANDOM赋值来初始化随机数序列.如果未设置RANDOM,即使随后重置,它也会失去其特殊属性.
核心工具 shuf
存在于Coreutils 中,如果字符串不包含换行符,则此函数运行良好。
例如,从a
、b
和中随机选择一个字母c
:
printf 'a\nb\nc\n' | shuf -n1
Run Code Online (Sandbox Code Playgroud)
POSIX eval 数组模拟 + RANDOM
修改 Marty 的eval
技术以模拟数组(非 POSIX):
a1=a
a2=b
a3=c
eval echo \$$(expr $RANDOM % 3 + 1)
Run Code Online (Sandbox Code Playgroud)
这仍然留下RANDOM
非POSIX。
awk
'srand()
是解决这个问题的 POSIX 方法。
小智 5
64个字母字母数字字符串
randomString32() {
index=0
str=""
for i in {a..z}; do arr[index]=$i; index=`expr ${index} + 1`; done
for i in {A..Z}; do arr[index]=$i; index=`expr ${index} + 1`; done
for i in {0..9}; do arr[index]=$i; index=`expr ${index} + 1`; done
for i in {1..64}; do str="$str${arr[$RANDOM%$index]}"; done
echo $str
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19067 次 |
最近记录: |