SRANDOM 是随机性更强的 RANDOM 的替代品。SRANDOM 于 2020 年底首次发布。此外,SRANDOM 可用于比 RANDOM 更大的计数范围。SRANDOM 附带 Bash-5.1。
所以问题是,如何更新到 bash 5.1 或通过其他方式获得 SRANDOM 支持?
随机的:
- 16 位
- 创建分布不太均匀的数据
随机:
- SRANDOM 手册页。
- 32 位
- 创建分布更均匀的数据
需要安装或更新什么才能使 SRANDOM 在 Ubuntu 的 konsole 上可用,以及如何安装或更新?
作为将来不再运行 bash 5.1 的系统的替代方案,如何在 bash 脚本或终端上获取并运行 SRANDOM 实现的 C 代码?
答案1
SRANDOM 的源代码可在此处获取https://github.com/josenk/srandom并且您应该能够在内核为 3.10 或更高版本的 Linux 上安装。
先决条件
如果您从事开发或 DevOps,那么您可能已经拥有它们了。
sudo apt install git make
下载
来源
mkdir your-srandom-source-code-dir
cd your-srandom-source-code-dir
git init
git clone https://github.com/josenk/srandom
安装
此处列出的组合手册https://github.com/josenk/srandom#compile-and-installation- 但这里有一个包括安装先决条件包的简单示例:
sudo apt update && sudo apt install kernel-devel
cd your-srandom-source-code-dir
make
make install
使用
您可以将 SRANDOM 用作一个包含所需随机数据的无限文件,例如,您可以将其用作 dd 的数据源。但请避免使用不限制读取数据量的命令(如“cat”),因为这可能会导致性能问题。
dd if=/dev/srandom count=1 bs=1M of=random-output.txt
答案2
在仍然不支持 SRANDOM 的系统上,您可以使用以下命令作为 RANDOM 的更好替代方案,直到您的系统支持 SRANDOM:
rnd="$((0x$(dd if=/dev/urandom of=/dev/stdout bs=4 count=1 status=none | xxd -p)))"
如果可以的话,SRANDOM 会更快。
另一个替代方案是:
my_rnd=$(openssl rand 4 | od -DAn)
答案3
在仍然不支持 SRANDOM 的系统上,您可以按照如下方式构建自己的随机替换:
srandom() {
# should be random number from /dev/urandom
# we take 4 bytes - one number 2^32
echo "$((0x$(dd if=/dev/urandom of=/dev/stdout bs=4 count=1 status=none | xxd -p)))"
}
答案4
您可以通过应用程序管理、synaptics 进行安装,或者按照下列方式安装随机支持 bash 5.1 pe:
获得http://ftp.gnu.org/gnu/bash/bash-5.1.tar.gz
tar xf bash-5.0.tar.gz
cd bash-5.1
./配置 make
安装