LINUX随机数

这是我个人的一个整理,现在记下我自己常用和了解的方法,以后如果能接触到其他的,我会在这里补充。我只会使用LINUX提供的特性,不会自己去写随机函数。

$RANDOM

这是最常见的用法了,而且简单。它产生0-32767之间的随机数。

echo $RANDOM

如果你想产生0-199的随机数。

echo $((RANDOM%200))

如果你想产生100-299的随机数

echo $(( RANDOM%200+100 ))

如果想生成的随机数大于32767怎么办?

你可以使用几次RANDOM然后以某种方式去计算得到你想要的范围。

比如你想产生2×32767范围的随机数

echo $(( RANDOM + RANDOM ))

这种方法需要你去测试,去测试随机结果是否满足你的要求。

我不会自己去找这种式子,浪费时间浪费资源,LINUX都给你准备好了。

貌似,下面介绍的方法,才是大牛们最常使用的随机数产生方法。

/dev/random和/dev/urandom

我以前都是使用的RANDOM而且从来没想过随机的性能,后来一次要做很大数据的随机,所以接触到这个方法,也知道这个号称真正的随机产生器(当然其实也有“弱点”)。

这些都是LINUX的特殊文件,可以想普通文件那样访问,读取的就是随机数。

简单的open,read,close就可以了。

SHELL中可以使用od命令。

/dev/random和/dev/urandom的区别

urandom-unblock random,就是unrandom不会阻塞。

详情可以自己google找找很好找的。给大家几个链接一般就解决问题了。

简单易懂的博文,看完就会写代码,不过有几个小错误,下面评论的都提到了:http://www.cyberciti.biz/faq/bash-shell-script-generating-random-numbers/

/dev/random vs /dev/unrandom:http://www.onkarjoshi.com/blog/191/device-dev-random-vs-urandom/

这里很多方法我都不懂,其实一两个方法就够用了。:http://stackoverflow.com/questions/2556190/random-number-from-a-range-in-a-bash-script

在C中使用/dev/random:http://stackoverflow.com/questions/2572366/how-to-use-dev-random-or-urandom-in-c

你可能感兴趣的:(LINUX随机数)