在程序中,我需要将变量设置为0或1的随机值。
我不知道该怎么做,而Google让我失败了。
在程序中,我需要将变量设置为0或1的随机值。
我不知道该怎么做,而Google让我失败了。
Answers:
一种简单的方法是使用$RANDOM
检索范围为[0; 0]的伪随机16位整数。32767]。您可以简单地将其转换为[0; 1]通过计算随机数的模2:
echo $(( $RANDOM % 2 ))
有关Bash的详细信息$RANDOM
:http : //www.tldp.org/LDP/abs/html/randomvar.html
通过这种简单的结构,您可以轻松地使用随机性来构建功能强大的脚本,例如该漫画中的...
$[]
语法-谁知道他们是否rm
具有该--no-preserve-root
功能?
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
,他们垂下了头,知道自己输了游戏,就继续用光驱擦除磁盘dd
。
--no-preserve-root
仅在“最新”实现。目前尚无关于何时实施的信息,但是IIRC才刚刚成立几年。而对于Linux而言,这是微不足道的。这是关于此的票证:bugs.launchpad.net/ubuntu/+source/coreutils/+bug/174283
你可以用 shuf
DESCRIPTION
Write a random permutation of the input lines to standard output.
-i, --input-range=LO-HI
treat each number LO through HI as an input line
-n, --head-count=COUNT
output at most COUNT lines
例:
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
1
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
0
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
0
$ foo=$(shuf -i0-1 -n1)
$ echo $foo
1
怎么样:
#!/bin/bash
r=$(($RANDOM % 2))
echo $r
甚至:
r=$(($(od -An -N1 -i /dev/random) % 2))
也许:
r=$(seq 0 1 | sort -R | head -n 1)
或者更客气地:
r=$(($(head -128 /dev/urandom | cksum | cut -c1-10) % 2))
并且:
r=$(apg -a 1 -M n -n 1 -m 8 -E 23456789 | cut -c1)
以及:
r=$((0x$(cut -c1-1 /proc/sys/kernel/random/uuid) % 2))
--no-preserve-root
-因此也许他们所希望的俄罗斯轮盘游戏不是……