Kyl*_*iss 3 string random bash
我知道有很多随机数发生器,但我正在寻找可能更可预测的东西.有没有办法在给定字符串的情况下获得"随机"数字(在每个实例中都是相同的)?我想在bash中这样做.我正在寻找比字符串中的字符数更高级的东西,但不像它的完整校验和那样先进.
最终目标是获取一个十进制值,因此可以多次重复结果对字符串运行.
你需要一个随机数,但你不想要一个完整的校验和,这是矛盾的.我认为md5sum并且sha1sum非常容易使用并且应该满足您的需求:
md5sum <<< "$your_str"
Run Code Online (Sandbox Code Playgroud)
要么
sha1sum <<< "$your_str"
Run Code Online (Sandbox Code Playgroud)
更新:
如果您需要十进制数字,只需:
n=$(md5sum <<< "$your_str")
echo $((0x${n%% *}))
Run Code Online (Sandbox Code Playgroud)
要将字符串散列abc到 3 位小数:
echo $((0x$(echo abc | md5sum | cut -f 1 -d " " | cut -c 1-3))) | cut -c 1-3
Run Code Online (Sandbox Code Playgroud)
要获得例如 4 位小数而不是 3 位小数,请替换两次出现的3by 4:
echo $((0x$(echo abc | md5sum | cut -f 1 -d " " | cut -c 1-4))) | cut -c 1-4
Run Code Online (Sandbox Code Playgroud)
$(echo abc | md5sum | cut -f 1 -d " " | cut -c 1-4) 给出 4 位的十六进制数。$((0xHEX))将十六进制 ( HEX)转换为十进制,即使HEX有 4 位,也可能超过4 位,例如ffffis 65535。cut -c 1-4 获取前 4 位数字。