shell中获取随机数与随机字符串的方式

1.date方式

获取随机数:date +%N%s

获取随机字符串:date +%N%s|md5sum|cut -c1-10|tr '0-9' 'a-z'

注:

date +%N  获得当前时间的纳秒数据,精确到亿分之一秒,在多核CPU大量循环里面,也可能有相同随机数碰撞

date +%s 获得时间戳,当前到:1970-01-01 00:00:00 相隔的秒数,在做循环任务时,多线程同时执行不能满足要求

所以我们用date +%N%s

详情看代码:

#获取随机数
[root@ansible01 ~]# date +%N%s
7753063281719364108
#获取随机字符串
[root@ansible01 ~]# date +%N%s|md5sum |cut -c 1-10|tr '0-9' 'a-z'
adjdeeeadb

2./dev/random与/dev/urandom方式

        /dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流

        这两个设备的差异在于:/dev/random的random依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用, /dev/random设备可以保证数据的随机性

获取随机数:tr -dc '0-9' </dev/random | head -c 10

获取随机字符串:tr -cd 'a-z' </dev/urandom|head -c10

详情请看代码:

#获取随机数以及命令运行时间
[root@ansible01 ~]# tr -dc '0-9' </dev/random | head -c 10
5265370806
[root@ansible01 ~]# time tr -dc '0-9' </dev/random | head -c 10
5446642762
^C

real	0m27.923s
user	0m0.000s
sys	0m0.080s

#获取随机字符串以及命令运行时间
[root@ansible01 ~]# tr -cd 'a-z' </dev/urandom|head -c10
ezaickkrin
[root@ansible01 ~]# time tr -cd 'a-z' </dev/urandom|head -c10
ytbwoimtul
real	0m0.003s
user	0m0.004s
sys	0m0.000s

对比能够看出在对/dev/random取随机数时,会很慢,不建议使用,我们可以只用/dev/urandom来获取

#获取随机数以及命令运行时间
[root@ansible01 ~]# tr -cd '0-9' </dev/urandom|head -c10
8359693358

#获取随机字符串以及命令运行时间
[root@ansible01 ~]# tr -cd 'a-z' </dev/urandom|head -c10
ezaickkrin

3.使用内部系统变量($RANDOM)

        $RANDOM是一个内置变量,用于生成一个介于1和32767之间的随机整数

#生成随机数
[root@ansible01 ~]# echo $RANDOM
10833
#生成一个[1, max) 随机数
$RANDOM * $max / 32767 + 1;
#生成一位、二位、三位、四位、五位随机数,最大只能生成五位随机数
[root@ansible01 ~]# echo $(( $RANDOM % 10 + 1 ))
7
[root@ansible01 ~]# echo $(( $RANDOM % 100 + 1 ))
71
[root@ansible01 ~]# echo $(( $RANDOM % 1000 + 1 ))
962
[root@ansible01 ~]# echo $(( $RANDOM % 10000 + 1 ))
5009
[root@ansible01 ~]# echo $(( $RANDOM % 100000 + 1 ))
25564
#生成随机字符串
[root@ansible01 ~]# echo $RANDOM|tr "0-9" "a-z"
bafic

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Git】版本控制器的方式:SVN集中式版本控制工具和Git分布式版本控制工具

一、应用场景 二、版本控制器的方式 三、SVN 集中式版本控制工具 四、Git 分布式版本控制工具 五、Git工作流程 一、应用场景 Git 在开发过程中提供了多种应用场景&#xff0c;帮助开发团队高效地管理代码、协同工作&#xff0c;并保证代码质量。以下是一些具体应用场景和相应…

Springboot Mybatis 多数据源配置以及使用

在Spring Boot中配置MyBatis的多数据源是一个常见需求&#xff0c;尤其是在需要连接多个数据库时&#xff0c;下面是详细的步骤指南。 引入依赖 首先&#xff0c;在你的pom.xml文件中添加Spring Boot、MyBatis和数据库连接的相关依赖。例如&#xff0c;如果你使用的是MySQL数…

python基础篇(6):global关键字

使用 global关键字 可以在函数内部声明变量为全局变量 未使用global关键字的代码&#xff1a; # global关键字&#xff0c;在函数内声明变量为全局变量 num 200def test_a():print(f"test_a: {num}")def test_b():num 500print(f"test_b: {num}")test_…

基于java+springboot+vue实现的宠物商城网站(文末源码+Lw)273

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;商品信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广…

智慧校园-毕业管理系统总体概述

在当今教育信息化的浪潮中&#xff0c;智慧校园毕业管理系统脱颖而出&#xff0c;它作为一项综合性的数字平台&#xff0c;全面覆盖了从毕业资格审查到学位授予的每一个关键步骤&#xff0c;旨在通过智能化手段&#xff0c;为高校的毕业管理工作带来革命性的变革。毕业管理系统…

JAVAEE之网络原理_传输控制协议(TCP)的滑动窗口、流量控制、拥塞控制、延迟应答、捎带应答机制

前言 在前面几节&#xff0c;我们讲解了TCP协议的基本概念、报文格式。还介绍了确认应答机制、超时重传、连接管理机制&#xff0c;在本节中 我们将会继续介绍TCP协议的其他机制。 一、滑动窗口机制&#xff08;效率机制&#xff09; 在前面的章节中我们讨论了确认应答策略&…

dbeaver数据库链接工具

1、下载dbeaver 一个绿色版一个安装版&#xff0c;官网开源版 2、安装 3、可以导入之前navicat的链接 导入 选择navicat 反编译密码的&#xff1a;https://tool.lu/coderunner navicat 版本15的密码解密&#xff1a;https://www.iatodo.com/navicatpw

阿里云+Halo个人博客搭建

前言 本文将介绍使用阿里云Halo搭建一个个人网站&#xff0c;过程极其简单&#xff0c;不需要什么计算机基础&#xff0c;操作电脑跟着步骤做就行。 在开始之前&#xff0c;还需要做一些前置准备 购买好服务器&#xff0c;本文使用阿里云&#xff0c;系统选择CentOS 7.6 64位…

高质量数据不够用,合成数据是打开 AGI 大门的金钥匙吗?

编者按&#xff1a; 人工智能技术的发展离不开高质量数据的支持。然而&#xff0c;现有可用的高质量数据资源已日渐接近枯竭边缘。如何解决训练数据短缺的问题&#xff0c;是当前人工智能领域亟待解决的一个较为棘手的问题。 本期文章探讨了一种经实践可行的解决方案 —— 合成…

如何从零开始搭建成功的谷歌外贸网站?

先选择一个适合外贸网站的建站平台&#xff0c;如WordPress或Shopify。这些平台提供丰富的主题和插件&#xff0c;可以帮助你快速搭建和定制网站。设计网站时&#xff0c;注重用户体验&#xff0c;确保导航清晰、页面加载快速、移动端友好。确保网站的SEO优化。从关键词研究开始…

web前端课程大作业-高校学生事务中心

文章目录 概述代码页面截图代码链接 概述 仿制高校的学生事务中心&#xff0c;一个登录和注册页面 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" conten…

SEO与AI的结合:如何用ChatGPT生成符合搜索引擎优化的内容

在当今数字时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已成为每个网站和内容创作者都必须掌握的一项技能。SEO的主要目标是通过优化内容&#xff0c;使其在搜索引擎结果页面&#xff08;SERP&#xff09;中排名更高&#xff0c;从而吸引更多的流量。然而&#xf…

《昇思25天学习打卡营第2天 | 张量 Tensor》

《昇思25天学习打卡营第2天 | 张量 Tensor》 《昇思25天学习打卡营第2天 | 张量 Tensor》 《昇思25天学习打卡营第2天 | 张量 Tensor》什么是张量&#xff08;Tensor&#xff09;张量的创建方式根据数据直接生成从NumPy数组生成使用init初始化器构造张量继承另一个张量的属性&a…

录制游戏视频软件,推荐3款,让你的作品更炫酷!

随着游戏行业的快速发展&#xff0c;录制游戏视频已经成为许多玩家的必备技能。无论是为了分享自己的游戏体验&#xff0c;还是为了制作游戏教程&#xff0c;一款好的录制游戏视频软件是必不可少的。接下来&#xff0c;我们将介绍三款录制游戏视频的软件&#xff0c;并对它们的…

12个RAG常见痛点及解决方案

Barnett等人的论文《Seven Failure Points When Engineering a Retrieval Augmented Generation System》介绍了RAG的七个痛点&#xff0c;我们将其延申扩展再补充开发RAG流程中常遇到的另外五个常见问题。并且将深入研究这些RAG痛点的解决方案&#xff0c;这样我们能够更好地在…

自动求导(正、反向传播)

一、自动求导&#xff1a;计算一个函数在指定值上的导数 二、计算图、操作子、无环图 1、显示构造&#xff08;就像数学一样&#xff09;&#xff1a;Tensorflow/Theano/MXNet 2、隐式构造&#xff1a;PyTorch/MXNet(听不懂emmmm) 3、自动求导两种模式 4、前向计算为一个符号求…

解锁高效办公:ONLYOFFICE版本8.1新功能揭秘与个人使用体验

文章目录 &#x1f4af;ONLYOFFICE 桌面编辑器 8.1 ✍1 新增功能介绍✍2 轻松编辑器PDF文件&#x1f353;2.1 PDF新增编辑器操作&#x1f353;2.2 PDF新增表单操作 ✍3 用幻灯片版式快速修改幻灯片✍4 无缝切换文档编辑、审阅和查看模式✍5 改进从右至左语言的支持 & 新的本…

STM32F4 STD标准库串口接收例程

STM32F4 STD标准库串口接收中断空闲中断例程 &#x1f516;工程基于STM32F446 ✨用惯了STM32CubeMX傻瓜式配置&#xff0c;突然改用标准库写代码&#xff0c;初始化外设内容&#xff0c;总是丢三落四的。 本文将提供3种串口接收和发送模式&#xff1a;串口接收中断空闲中断、串…

Vue组件生命周期深度剖析:从创建到销毁的八大钩子实战指南

系列文章目录 Vue核心指令解析&#xff1a;探索MVVM与数据操作之美 文章目录 系列文章目录前言一、Vue生命周期是什么&#xff1f;二、钩子函数讲解1. beforeCreate( 创建前 )2. created ( 创建后 &#xff09;3. beforeMount&#xff08;挂载前&#xff09;4. mounted&#xf…

深度学习之数据集 Dataset总结

数据集 Dataset MindSpore提供了基于Pipeline的数据引擎&#xff0c;通过Dataset和Transforms实现高效的数据预处理。它提供了内置的文本、图像、音频等数据集加载接口&#xff0c;并提供了自定义数据集加载接口。此外&#xff0c;MindSpore的领域开发库也提供了大量的预加载数…