Linux bash 产生不同随机数MAXCOUNT=10 #这是变量
count=1 #同上
number=$RANDOM
FLOOR=0
RANGE=999 #随机数范围linux命令行随机数,1-999之间linux命令行随机数,可以改
number=0
while [ "$number" -le $FLOOR ]
do
number=$RANDOM
let "number %= $RANGE"
done
echo "$number"
这样就可以产生随机数了.....,没时间了,.别的没法一一注释,自己看
linux计算随机产生的一百个数的和下面的命令将随机生成1-1000之间的100个随机数,并求和输出:
shuf -i 1-1000 -n 100|awk '{sum+=$1} END {print "Sum = ", sum}'
输出:Sum =52997
如何在Linux系统通过命令行生成随机文件A、当你不需要关心随机文件的内容,只需一个固定大小的文件
1、Solaris、Mac OS X等Unix系统中mkfile指令,可以产生指定大小的文件,而Linux上则没有
例子:
mkfile -n 160g test1
2、Linux可以用dd指令,/dev/zero是一个特别的文件描述符可以通过它返回null值
例子:
dd if=/dev/zero of=test.file count=1024 bs=1024
产生count * bs字节的文件,1M
此方法生成随机文件的好处在于效率高(产生1G文件大概1s),创建的文件大小精确到字节
坏处也有
使用null字符来填充文件内容,文件统计时没有行(wc -l test.file为0)
B、当你不需要关心随机文件的内容,但期望测试文件能有统计的行
将/dev/zero改为/dev/urandom,/dev/urandom是linux下的随机数生成器
关于/dev/urandom跟/dev/random两者的区别就不在此详细讨论 , 大概就是,前者是不受系统interrupts的限制,即使没有足够的interrupt它也能通过随机数生成器产生足够的输出值;而后者如果用在dd上,它不能被ctrl+c或者kill -9中断,如果ds的值较大时,产生的随机值不足而长期占用CPU 。虽然说/dev/random产生的随机数会更随机些,但与dd混用还是建议用/dev/urandom效率更高 。
缺点跟/dev/zero比当然是效率会更低些了,生成个100Mb的文件需要10秒左右,而且文件并没有可读的内容,一般的情况基本上是满足了 。
漏了说句,dd是linux与unix都支持的指令 。
C、当你关心文件的随机内容行数 , 而不关心内容是否有所重复
这里的思路就是找一个参照文件(比如说2行),将文件重新定向到新的文件 , 再mv覆盖保存,外加一个for循环 。(n为循环次数,产生的文件行为2^(n+1))
例子:假设先建立一个file.txt文件,里面含有Hello 和 World两行
for i in {1..n}; do cat file.txt file.txtfile2.txtmv file2.txt file.txt; done
由于是阶乘,n=20左右已经是200W行,效率会下降地比较厉害
D、当你关心随机文件的内容,而不想出现重复内容行情况
这种情况下系统的指令应该是不能满足了 , 或者可以通过操作系统的指令写一大串脚本也可以达到,但不建议这么做 , 因为可读性和维护性考虑,你应该要引入Ruby或者Python类的脚本语言帮忙了
但还是要借助些系统的东西来帮忙
思路:
/usr/share/dict/words里面有记录一些单词,一共235886行,每行一个单词
可以从里面挑选一些作为文件的内容
加循环达到我们想要的随机文件要求
举例:
ruby -e 'a=STDIN.readlines;X.times do; b=[];Y.times do; ba[rand(a.size)].chomp end; puts b.join(" ")'/usr/share/dict/wordsfile.txt
X为随机文件需要的行数,Y为从words中读取的单词 , 虽说组合成一句的命令,还是可以读懂的;从标准输入中重复读取Y个单词,写入到b列表中,然后再通过join空格连接内容写入到标准输出文件file.txt中
这样基本很少会有重复的行了,而且生成的效率与其他方法对比还是可以的,10秒生成100Mb文件 。欢迎大家讨论 。
推荐阅读
- erp系统学习销售技巧,erp销售系统如何操作
- jquery固定侧边栏,jquery怎么实现左右滑动
- php运行python权限不够,php实现权限管理
- 好玩的能联机的单机游戏,好玩的能联机的单机游戏手游
- mysql怎么删建立的库 mysql怎么删除创建的数据库
- C语言堆栈编程,c语言打印调用堆栈
- ipadmini系统ios8,iPadmini系统占用10多g内存
- 求补码的python代码,python补码转换
- c语言函数的嵌套有哪两种 c语言嵌套定义是什么意思