首页 > 系统相关 >Linux随机生成数

Linux随机生成数

时间:2023-07-05 16:46:24浏览次数:36  
标签:min -- 生成 shuf 随机 随机数 Linux

简介

在某些情况下,我们需要随机产生一个数来在一些场景中使用,例如验证码、ssh反向代理随机数的产生,又或者在一些shell脚本设计中需要用到随机数,这里介绍常用几个linux产生随机数的方法。

使用shuf

shuf 命令在一些 Linux 系统中是自带的,但并不是所有系统都包含该命令。在 Ubuntu 20.04系统 中,shuf 是默认安装的,因此可以在该系统上使用该命令。如果没有可以手动安装即可。

以下是一些示例用法:

1、生成一个指定范围内的随机数:例如在30000-40000之间随机产生一个数,如下

shuf -i 30000-40000 -n 1

2、从文件中随机选择一行:

shuf file.txt

3、从命令行参数中随机选择一个元素:

shuf -e "apple" "banana" "orange"

4、从文件中随机选择 5 行:

shuf -n 5 file.txt

5、从文件中随机选择行,并将输出重定向到另一个文件:

shuf file.txt -o shuffled.txt

参数介绍

  • -e, --echo: 将参数作为输入,并随机打印每个参数。
  • -i, --input-range=LO-HI: 指定一个范围,以 LO 到 HI 的整数为输入,并随机打印输出。
  • -n, --head-count=COUNT: 从输入中随机选择 COUNT 个行并打印输出。
  • -r, --repeat: 允许重复选择行。
  • -z, --zero-terminated: 使用 null 字符作为行分隔符。
  • -o, --output=FILE: 将输出重定向到指定文件。

使用 Awk

使用 awk 命令生成随机数:

awk -v min=30000 -v max=40000 'BEGIN{srand(); print int(min+rand()<em>(max-min+1))}'

使用 /dev/urandom 设备生成随机数:

listen_port=$(od -An -N2 -i /dev/urandom | awk -v min=30000 -v max=40000 '{ print ($1 % (max - min + 1)) + min }'

/dev/urandom文件产生随机数据,在熵用尽时不会阻塞。这使得它适用于非加密目的和需要大量随机数的应用。

/dev/random文件使用一种加密安全的算法生成随机数据,这使得它适合用于加密目的。然而,当它耗尽熵(从环境中收集的随机性)时,它就会阻塞,它可能导致程序停止,直到收集到更多的熵。

通过内部系统变量($RANDOM)

echo $RANDOM

生成0-32767之间的整数随机数,若超过5位可以加个固定10位整数,然后进行求余。

产生0到9的随机数可以使用$(($RANDOM%10))取余数,理论上只要a<32767,就可以取0到(a-1)之间的随机数

或者echo ${RANDOM:0:1}下标从0开始长度为1的个位数 

生成两位数就是echo ${RANDOM:0:2}

6-87范围的数:$(($RANDOM%82+6))    #($RANDOM%82可以产生0到81之间的数)

总结

在linux中无论使用那种方法产生的随机均是伪随机数,都不是真正的随机数。在加密或安全敏感的应用中,真正的随机数由物理过程产生,如放射性衰变或热噪声,是首选。

标签:min,--,生成,shuf,随机,随机数,Linux
From: https://www.cnblogs.com/mefj/p/17528950.html

相关文章

  • Mybatis-generator插件快速生成代码
    生成步骤:在pom.xml中添加插件<!--mybatisGenerator插件--><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version><depende......
  • Linux 虚拟文件系统四大对象:超级块、inode、dentry、file之间关系
    转载:Linux虚拟文件系统四大对象:超级块、inode、dentry、file之间关系-一口Linux-博客园(cnblogs.com)一:文件系统1.什么是文件系统?操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。通常文件系统是用于存储和组织文件的一种机制,便于对文件进行......
  • 向AI请教能否用图片生成vue代码
    Canfigmageneratevuecodebasedonascreenshotcapturedfromanandroidapp?Wed,Jul5,2023,3:49pmavatarNo,FigmadoesnotnativelygenerateVuecodebasedonascreenshotcapturedfromanAndroidapp.Figmaisprimarilyadesignandprototyping......
  • 【linux】日志合并
    #!/bin/bashoutput_file="merged_logs.log"#合并后的日志文件名logs=$(ls|grep.access.log)#获取满足条件的日志文件列表#清空或创建新的日志文件>"$output_file"#循环处理每个日志文件forlog_filein$logs;docat"$log_file">>"$output_file&q......
  • Linux安装RabbitMQ详细教程
    一、环境准备1、RabbitMQ版本和Erlang版本兼容性关系https://www.rabbitmq.com/which-erlang.html2、ErLang安装教程https://blog.csdn.net/laterstage/article/details/131513793?spm=1001.2014.3001.55013、RabbitMQ的安装依赖于erlang所以先安装4、RabbitMQ下载链接weg......
  • 在linux开发板上加载.ko驱动文件时,出现“insmod: ERROR: could not insert module led
    本文档仅用于本人在学习过程中的记录,方便日后查找问题。问题描述:在ubuntu虚拟机编译出的xxx.ko文件,发送到linux开发板上,执行insmodxxx.ko时,出现“insmod:ERROR:couldnotinsertmoduleled.ko:Invalidmoduleformat”错误。原因查找:1)在linux开发板上,使用uname-r查看lin......
  • 探究Visual Studio生成的.vs文件夹内部结构和作用
    https://shiyousan.com/post/636441130259624698.vs目录是用来存储当前用户在解决方案中的工作配置,具体包括VS关闭前最后的窗口布局、最后打开的选项卡/操作记录/文件文档、某些自定义配置/开发环境、调试断点等这类设置信息和状态。这样每当用户关闭解决方案后再重新打开,就能继......
  • 直播软件搭建,生成二维码及添加logo
    直播软件搭建,生成二维码及添加logo  @Override  publicBitmapgenerateBitmap(Stringcontent,intwidth,intheight){    QRCodeWriterqrCodeWriter=newQRCodeWriter();    Map<EncodeHintType,String>hints=newHashMap<>();    h......
  • PTE11-linux操作系统安全
    linux操作系统分为账户安全、文件系统安全、日志分析等三类。linux系统标识与鉴别----安全主体安全主体用户:身份标识userID;组:身份标识groupID文件必须有所有者,必须属于某个或多个组,用户和组的关系灵活(一对多,多对多等都可以),根用户拥有所有权限。信息存储-用......
  • jmeter非gui运行,jtl生成了,但是html报告没有生成
     jmeter非gui运行,jtl生成了,但是html报告没有生成,查看log,内容如下: 22:45:00,913ERRORo.a.j.JMeter:Errorgeneratingdashboard:org.apache.jmeter.report.dashboard.GenerationException:Errorwhileprocessingsamples:Mismatchbetweenexpectednumberofcolumns:17an......