Linux随机生成数

news2024/11/23 0:55:26

简介

在某些情况下,我们需要随机产生一个数来在一些场景中使用,例如验证码、ssh反向代理随机数的产生,又或者在一些shell脚本设计中需要用到随机数,下面以随机产生一个30000-40000之间的随机数为例。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/725732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【FFMPEG】AVFilter使用流程

流程图 核心类 AVFilterGraph ⽤于统合这整个滤波过程的结构体 AVFilter 滤波器&#xff0c;滤波器的实现是通过AVFilter以及位于其下的结构体/函数来维护的 AVFilterContext ⼀个滤波器实例&#xff0c;即使是同⼀个滤波器&#xff0c;但是在进⾏实际的滤波时&#xff0c;也…

基于单片机水质检测系统的设计与实现

功能介绍 以STM32单片机作为主控系统&#xff1b;液晶显示当前参数&#xff1b;PH模块采集当前水质PH酸碱度&#xff1b;DS18B20温度传感器采集当前水体温度&#xff1b;TDS传感器采集当前水体TDS值&#xff1b;浊度传感器采集当前水体浑浊度&#xff1b;按键设置PH、温度、TDS…

基于vscode连接到远程服务中debug

本文章主要讲解以下两点的任务 1.在windows的vscode中去debug 本机子系统wsl2中运行的docker容器 该篇文件参考知乎上这篇文章 vscode远程连接到本机 wsl2子系统 中正在运行的 docker容器&#xff0c;该docker中有一个flask实例&#xff0c;通过vscode远程debug它 1.1安装v…

基于matlab配置单目鱼眼摄像头(附源码)

一、前言 此示例演示如何将鱼眼相机模型转换为针孔模型&#xff0c;并构建相应的单目相机传感器仿真。 要模拟安装在车辆中的单目摄像头传感器&#xff0c;请执行以下步骤&#xff1a; 通过使用棋盘格校准相机来估计固有的相机参数。内在参数描述了鱼眼镜头相机本身的特性。 …

抖音seo矩阵系统源码部署开发-可二开(二)

抖音seo短视频剧组嗯系统是以人工智能技术&#xff0c;通过多个短视频平台&#xff0c;多个短视频账号为核心&#xff0c;视频自动生成、自动发布智能优化&#xff0c;以达到矩阵营销的目的&#xff0c;从根本上解决短视频曝光难和获客少等难题&#xff0c;从而快速增加商家的运…

基于matlab使用卷积神经网络对晶圆图上的八种制造缺陷进行分类(附源码)

一、前言 此示例展示了如何使用简单的卷积神经网络 &#xff08;CNN&#xff09; 对晶圆图上的八种制造缺陷进行分类。 晶圆是半导体材料&#xff08;通常是硅&#xff09;的薄盘&#xff0c;用作集成电路的基础。每个晶圆产生几个单独的电路&#xff08;IC&#xff09;&…

XXX汽车ERP系统供应商索赔业务上线,助力业财数据快速闭环(投稿数据化月报四)

供应商三包索赔款项源起QMS质量系统&#xff0c;联动金税系统完成发票开具&#xff0c;最终在SAP系统中创建完成财务凭证。该流程上线前为手工操作&#xff0c;费时费力且效率低下容易出错。针对该业务现状&#xff0c;SAP与QMS业务顾问及开发团队组成开发小组&#xff0c;导入…

Java性能权威指南-总结26

Java性能权威指南-总结26 数据库性能的最佳实践异常日志 数据库性能的最佳实践 异常 Java的异常处理一直有代价高昂的坏名声。其代价确实比处理正常的控制流高一些&#xff0c;不过在大多数情况下&#xff0c;这种代价并不值得浪费精力去绕过。另一方面&#xff0c;因为异常处…

添加 zabbix 客户端主机 自定义监控内容 自动发现与注册(得不到假装不想要)

文章目录 一、添加zabbix客户端主机2.关闭防火墙和修改主机名 二、自定义监控内容1.需求&#xff1a;限制登录人数不超过 3 个&#xff0c;超过 3 个就发出报警信息在客户端创建自定义 key在 Web 页面创建自定义监控项模板 三、zabbix 自动发现与自动注册zabbix 自动发现&#…

HCIE-datacom | 网络准入控制

一、前言 之前提供网络技术咨询服务时&#xff0c;有一位实习生同学向我咨询了有关网络准入的相关情景&#xff0c;在这里我结合华为HCIE-datacom中“网络准入控制”这一节等相关资料&#xff0c;对网络准入技术进行一下简单的理论性说明&#xff0c;与资料的讲解思路相同&…

基于matlab使用AprilTag标记进行相机校准(附源码)

一、前言 AprilTags被广泛用作物体检测、定位应用的视觉标记&#xff0c;并作为相机校准的目标。AprilTags类似于QR码&#xff0c;但旨在编码更少的数据&#xff0c;因此可以更快地解码&#xff0c;这对于实时机器人应用程序非常有用。使用 AprilTags 作为校准模式的优点包括更…

Docker学习笔记21

案例三&#xff1a;使用容器运行一个wordpress应用&#xff1a; 语言开发环境&#xff08;PHP&#xff09; 数据库 第一步&#xff1a;创建一个工程目录&#xff1a; mkdir wordpress cd wordpress 第二步&#xff1a;创建一个docker-compose.yaml文件&#xff1a; [rootnode…

Mybatis进阶(2)——为什么用mybatis? 多表查询解决 延迟加载 mybatis缓存 【未完待续】

目录 引出一、为啥用mybatis&#xff1f;二、多表查询之一对多【待续】1.一对多的情况方案一&#xff1a;采用多表联查的方式&#xff08;1&#xff09;resultMap&#xff08;2&#xff09;查询的java接口和xml的SQL语句&#xff08;3&#xff09;对应关系分析&#xff08;4&am…

使用docker搭建minio分布式对象存储系统

使用docker搭建minio分布式对象存储系统 这里我简单的和大家介绍一下什么是minio &#xff1f; 附上Minio官网链接&#xff1a;https://minio.org.cn/ MinIO是一种开源的对象存储服务器&#xff0c;通过使用标准的HTTP/REST API来访问和管理数据。它采用分布式架构&#xff0c…

【SAP UI5 控件学习】DAY02 Input组PartII

1. CheckBox控件 1.1 最普通的CheckBox <CheckBox text"Option a" selected"true" />如果需要设置选中状态&#xff0c;需要设置selected属性为true 1.2 部分选中CheckBox <CheckBox text"Option partially selected" selected"t…

【ElasticSearch】DSL查询语法

文章目录 1、DSL查询分类2、DSL基本语法3、全文检索查询4、精确查询5、地理查询6、复合查询--相关性打分算法7、复合查询之Function Score Query8、复合查询之BooleanQuery 1、DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;…

【ARM Coresight 系列文章 2 - ARM Coresight 介绍】

文章目录 1.1 ARM Coresight 介绍1.1.1 ARM Coresight 发展历史 1.2 ARM Coresight 框架介绍1.1.1 Trace 通路1.1.3 Debug 通路1.1.4 Trigger 通路 1.1 ARM Coresight 介绍 ARM Coresight是ARM公司提供的一种调试和跟踪技术&#xff0c;用于ARM处理器的调试和性能分析。它通过…

Java中规模软件开发实训——简单的文本编辑器(代码注释详解)

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;html css js&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;在现代社会中…

k8s如何伸缩应用程序和执行滚动更新

一、伸缩应用程序 我们创建了一个 Deployment (opens new window)&#xff0c;然后通过 服务 (opens new window)提供访问 Pod 的方式。我们发布的 Deployment 只创建了一个 Pod 来运行我们的应用程序。当流量增加时&#xff0c;我们需要对应用程序进行伸缩操作以满足系统性能…

第五章:L2JMobius学习 – 快速部署L2JMobius汉化版

L2JMobius是一套开源的 LineageII 的服务器端代码&#xff0c;使用Java语言编写。在前面的章节中&#xff0c;我们安装了mariadb10数据库以及jdk17运行环境&#xff0c;这两个是必须的。紧接着&#xff0c;我们又安装了eclipse开发工具&#xff0c;然后创建了“L2J_Mobius”Jav…