SHELL 如何生成pdf文件随机取文件的10%数据生成新文件

[转载]shell&如何生成随机数
How Shell Generated Random
随机数在实际应用中有很重要的用途。每个语言都提供了生成随机数的方法,同样的,shell 也可以产生随机数。
产生随机数的关键是需要一个随机数的基数。shell 有多种方法获得随机数的基数。
时间命令产生伪随机数
date 命令可以获得当前时间的纳秒值,这个值精确到亿分之一秒(范围
9999999)。可以利用这个纳秒值来产生伪随机数的基数。
test.sh 文件的内容如下
range=$(($max - $min + 1))
number=$(($((10#$(date +%N))) % range + $min))
while true
&&& echo $LINENO
`random 1 100`
在命令提示符下输入 ./test.sh,将会循环产生 1~100 之间的伪随机整数。
使用 date 命令产生伪随机数的基数时,需要进行 10 进制转换。因为 $(date +%N) 的结果有可能是数字 0
开头的整数,shell 会将其识别为八进制数值,当数值中出现非八进制数字时,会出现错误(数值太大不可为算数进制的基)。
$RANDOM 产生伪随机数
$RANDOM 是 shell 的内部函数(不是变量),这个函数返回范围 0~32767 之间的一个伪随机整数。在 shell
中,常使用这个函数返回一个指定范围的伪随机数。
test.sh 文件的内容如下
numbers=(136 158 132 133 139 189)
while true
index=$(($RANDOM % ${#numbers[*]}))
numbers[$index]=${numbers[$index]}
在命令提示符下输入 ./test.sh,将会循环产生 0~${#numbers[*]}-1 之间的数组索引。
RANDOM 产生的不是真正的随机数,如果每次使用相同的随机数种子,随机数将产生相同的序列。因此,使用不同的随机数种子,将增加
RANDOM 产生真正随机数的几率。
test.sh 文件的内容如下
while true
RANDOM=$((10#$(date +%N)))
random=$RANDOM
在命令提示符下输入 ./test.sh,将会循环产生 0~32767 之间的伪随机整数。
我们常需要产生指定范围的被指定整数整除的随机数。可以使用如下通用算法:
random_number = random%(max - min + 1) + min + div - 1) / div *
test.sh 文件的内容如下
l_range=$(($l_max - $l_min + 1))
&&& RANDOM=`date
number=$((($RANDOM % $l_range + $l_min + $l_div - 1) / $l_div *
update_count ()
&&& case $1
((numbers[3]++)) ;;
((numbers[6]++)) ;;
((numbers[9]++)) ;;
((numbers[12]++)) ;;
((numbers[15]++)) ;;
((numbers[18]++)) ;;
((numbers[21]++)) ;;
((numbers[24]++)) ;;
((numbers[27]++)) ;;
((numbers[30]++)) ;;
readonly max_count=600
readonly g_min=1
readonly g_max=30
readonly g_div=3
while [ $count -lt $max_count ]
&&& update_count
`random $g_min $g_max $g_div`
((count++))
echo numbers[3]=${numbers[3]}
echo numbers[6]=${numbers[6]}
echo numbers[9]=${numbers[9]}
echo numbers[12]=${numbers[12]}
echo numbers[15]=${numbers[15]}
echo numbers[18]=${numbers[18]}
echo numbers[21]=${numbers[21]}
echo numbers[24]=${numbers[24]}
echo numbers[27]=${numbers[27]}
echo numbers[30]=${numbers[30]}
在命令提示符下输入 ./test.sh,执行结果如下:
numbers[3]=63
numbers[6]=47
numbers[9]=45
numbers[12]=55
numbers[15]=60
numbers[18]=63
numbers[21]=67
numbers[24]=69
numbers[27]=78
numbers[30]=53
在示例 4 中,每次执行的结果都是会不一样的。如果产生随机数的算法要做到真正的随机,则所有随机数的值的分布应该是均衡的。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。shell脚本实现随机生成10个8位密码_linux shell
作者:用户
本文讲的是shell脚本实现随机生成10个8位密码_linux shell,
随机生成10个8位密码shell脚本
1.首位大写字母
2.中间六位大小写字母数字随机混合
3.第八位[0-9]
#!/bin.bash
for i in {1..10}
A=`head -c 500 /dev/urandom
随机生成10个8位密码shell脚本
1.首位大写字母
2.中间六位大小写字母数字随机混合
3.第八位[0-9]
#!/bin.bash
for i in {1..10}
A=`head -c 500 /dev/urandom | tr -dc a-zA-Z | tr [a-z] [A-Z]|head -c 1`
B=`head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 6`
C=`echo $RANDOM|cut -c 2`
echo $A$B$C
--------------------------------
#!/bin.bash
for i in {1..10}
A=`head -c 500 /dev/urandom | tr -dc A-Z |head -c 1`
#随机生成500字符|只取大写字母|取第一个字符
B=`head -c 500 /dev/urandom | tr -dc [:alnum:]| head -c 6`
#随机生成500字符|取英文大小写字节及数字,亦即 0-9, A-Z, a-z|取6位
C=`echo $RANDOM$RANDOM|cut -c 2`
#取第二位随机数字,第一位随机性不高大多数是1或2,所以取第二位.
echo $A$B$C
以上所述就是本文的全部内容了,希望大家能够喜欢。
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索shell脚本
shell脚本生成随机数、shell脚本随机数、shell脚本产生随机数、shell脚本 随机ip、shell 生成随机数,以便于您获取更多的相关知识。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备
云栖社区(yq.aliyun.com)为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!shell生成随机数的几种方法_百度知道
shell生成随机数的几种方法
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
遥望天的伤
遥望天的伤
采纳数:14
获赞数:11
(1)通过内部系统变量($RANDOM)#!/bin/bash
function rand(){
max=$(($2-$min+1))
num=$(($RANDOM+)) #增加一个10位的数再求余
echo $(($num%$max+$min))
rnd=$(rand 000)
exit 0(2)使用awk的随机函数awk 'BEGIN{srand();print rand()*1000000}'
#可以加上if判断,779644(3)openssl rand产生随机数openssl rand 用于产生指定长度个bytes的随机字符。-base64或-hex对随机字符串进行base64编码或用hex格式显示。openssl rand -base64 8 | md5sum | cut -c1-8
#八位字母和数字的组合,3a61800eopenssl rand -base64 8 | cksum | cut -c1-8
#八位数字,(4)通过时间获得随机数(date)date +%s%N
#生成19位数字,1101270date +%s%N | cut -c6-13
#取八位数字,date +%s%N | md5sum | head -c 8
#八位字母和数字的组合,87022fda
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。旗下栏目:
您现在的位置: >
shell 随机从文件中抽取若干行的实现方法
所属栏目:
发布时间:
| 小编:豆豆
shuf -n5 main.txtsort -R main.txt | head -5awk -vN=5 -vC=&`wc -l file`& 'BEGIN{srand();while(n&N){i=int(rand()*C+1);if(!(i in a)){a[i]++;n++}}}NR in a' filedo echo &$line $RANDOM&;done & main.txt | sort -k2,2n| awk 'NR&=5{print $1}'shuf 命令的选项:-e, --echo :将每个参数视为输入行。& & & & -i, --input-range=LO-HI :将LO 到HI 的每个数字视为输入行。& & & &&-n, --head-count=行数 : 最多输出指定的行数。& & & &&-o, --output=文件 :将结果输出到指定文件而非标准输出。& & & &&--random-source=文件 :从指定文件获得随机比特。& & & &&-z, --zero-terminated :以0 结束行而非新行。& & & &&--help :显示此帮助信息并退出。& & & &&--version :显示版本信息并退出。示例:
相关阅读:
看过本文的人还看过
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。shell脚本随机输出一个文件的25行
好久没写shell脚本了,今天看到群里有这么一个需求,截图如下:
我也是复习一下shell脚本,就顺手写了个程序测试了一下,基本上通过了
首先,用shell脚本按行读取文本,将每一行存入一个数组中
每次选择一个随机数,来从数组中取数据
注意,不能是重复的行,所以随机数有标记字段
#!/bin/bash&
#文件位置&
file=&./test.txt&&
#按行读取文件内容,存入arr数组中&
for line in $(awk '{print $0}' $file)&
&&& arr[$i]=$line&
&&& i=$(expr $i + 1)&
#构造随机数数组,假定文件只有100行,当random[i]=0时说明第i行没有被读取&
for i in $(seq 1 100)&
&&& random[$i]=0&
#构造随机数,随机选取25行&
for ((i=0; i&25;))&
&&& index=$RANDOM%100&
&&& if [ ${random[$index]} -eq 0 ]; then&
&&&&&&& random[$index]=1&
&&&&&&& echo ${arr[$index]}&
&&&&&&& i=$(expr $i + 1)&
#!/bin/bash
file=&./test.txt&
#按行读取文件内容,存入arr数组中
for line in $(awk '{print $0}' $file)
&arr[$i]=$line
&i=$(expr $i + 1)
#构造随机数数组,假定文件只有100行,当random[i]=0时说明第i行没有被读取
for i in $(seq 1 100)
&random[$i]=0
#构造随机数,随机选取25行
for ((i=0; i&25;))
&index=$RANDOM%100
&if [ ${random[$index]} -eq 0 ]; then
&&random[$index]=1
&&echo ${arr[$index]}
&&i=$(expr $i + 1)

我要回帖

更多关于 数据生成的文件 的文章

 

随机推荐