
正文
linux随机数命令 linux生成随机数字
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
linux计算随机产生的一百个数的和
下面的命令将随机生成1-1000之间的100个随机数linux随机数命令,并求和输出linux随机数命令:
shuf -i 1-1000 -n 100|awk '{sum+=$1} END {print "Sum = ", sum}'
输出linux随机数命令:Sum = 52997
相关问答
Q1: 如何在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.txt file2.txt mv 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/words file.txt
X为随机文件需要的行数,Y为从words中读取的单词,虽说组合成一句的命令,还是可以读懂的;从标准输入中重复读取Y个单词,写入到b列表中,然后再通过join空格连接内容写入到标准输出文件file.txt中
这样基本很少会有重复的行了,而且生成的效率与其他方法对比还是可以的,10秒生成100Mb文件。欢迎大家讨论。
Q2: linux中,C语言for语句中的随机数种子。
#includestdio.h
#includestdlib.h
#includetime.h
int main()
{
int i,j;
srand(time(0));
for( i = 0;i 1000;i++)
for(j = 0;i 100;i++){
printf("%3d",rand()%100+1);
printf("\n");
}
return 0;
}
Q3: 2019-11-05 随机生成字符串/dev/urandom, tr, head命令
1、/dev/random和/dev/urandom是linux系统提供的随机伪设备,其作用是提供非空的随机字节数据流,多用于SSH, SSL的keys等。
这两个的区别是什么?
首先我们要理解一个高大上的词: 熵(Entropy)拼音(Shang)。熵被用于计算一个系统中的失序现象,或者说混乱程度。「熵增加原理」的意思是:在没有外界影响的情况下(孤立系统)无法利用的能量会越来越多,而且这个过程无法自发逆转。 真是一个令人沮丧的理论(闲话少说)
Linux计算熵,是通过系统的环境噪音自动生成,这里的环境噪音可以是键盘,鼠标,内存,文件,进程等等。
下面的命令可以查看系统熵
当entropy_avail中的值小于阈值,读取/dev/random就会被阻塞。
现在来看/dev/random与/dev/urandom的区别。
前一个/dev/random叫做 真随机数生成器 ,会消耗熵值来产生随机数,同时在熵耗尽的情况下会阻塞,知道新的熵生成。
/dev/urandom叫做 伪随机数生成器 ,它根据熵池中的一个随机种子来产生一系列伪随机数。但如果在系统启动阶段使用 /dev/urandom ,则可能存在熵池中还不存在任何熵的情况,这时候用 /dev/urandom 产生的随机数是可预测的。
2、tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
tr [-cdst][--help][--version][第一字符集][第二字符集]
tr的各种参数就不一一列举了,举例子:
这两个命令都是将sample.txt文件的内容小写字母全部转换成大写字母。
3、head/tail命令
从头/尾显示
head -n 3 file name表示显示前三行;
head -c 30 file name表示显示前30个字符。
4、生成随机变量
可以看到随机生成了24位的变量放到RD里。
Q4: Linux,shell如何用read指令随机生成10个数,并相加?还需使用read指令
不知道linux随机数命令你linux随机数命令的目的是什么
主要有两个方法:
linux有个设备文件 /dev/random
可以用read从中读取随机数据。
然后可以用md5 散列成数值。
-----------
或者
echo $RANDOM |read val
直接读取随机数值。
Q5: 如何在linux中用命令产生一个范围内的随机数
linux内核自1.3.30版本以来实现了一个随机数产生器linux随机数命令,从理论上说它能产生真正的随机数linux随机数命令,该随机数产生器是从设备驱动收集电路上的环境噪音放入熵池linux随机数命令,它的实现代码在drivers/char/random.c中,自己去看吧
linux随机数命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux生成随机数字、linux随机数命令的信息别忘了在本站进行查找喔。






