<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[linux shell实现随机数多种方法,shell 生成指定范围随机数与随机字符串.]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 01 Nov 2010 03:59:24 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	零、使用系统的 $RANDOM 变量<br/>echo $RANDOM&nbsp;&nbsp;<br/>17617&nbsp;&nbsp;<br/>$RANDOM 的范围是 [0, 32767]<br/>如需要生成超过32767的随机数，可以用以下方法实现。<br/><br/>一、通过时间获得随机数（date)<br/>这个也是我们经常用到的，可以说时间是唯一的，也不会重复的，从这个里面获得同一时间的唯一值。适应所有程序里面了。<br/><br/>例子：<br/>[chengmo@centos5&nbsp;&nbsp;shell]$ date +%s<br/>1287764773<br/>#获得时间戳，当前到：1970-01-01 00:00:00 相隔的秒数<br/>#如果用它做随机数，相同一秒的数据是一样的。在做循环处理，多线程里面基本不能满足要求了。<br/> <br/>[chengmo@centos5&nbsp;&nbsp;shell]$ date +%N<br/>738710457<br/>#获得当前时间的纳秒数据，精确到亿分之一秒。<br/>#这个相当精确了，就算在多cpu，大量循环里面，同一秒里面，也很难出现相同结果，不过不同时间里面还会有大量重复碰撞<br/> <br/>[chengmo@centos5&nbsp;&nbsp;shell]$ date +%s%N<br/>1287764807051101270<br/>#这个可以说比较完美了，加入了时间戳，又加上了纳秒<br/>通过上面说明，用它来做随机数的基数了，接下来我们看怎么样获得一段数据内怎么样获得随机数。<br/><br/>#!/bin/sh <br/>#写个随机函数，调用方法random min max<br/>#在min 与 max直接获得随机整数<br/>#copyright chengmo QQ:8292669<br/> <br/> <br/>#获得随机数返回值，shell函数里算出随机数后，更新该值<br/><br/><div class="code">function random()<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;min=$1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;max=$2-$1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;num=$(date +%s+%N);<br/>&nbsp;&nbsp;&nbsp;&nbsp;((retnum=num%max+min));<br/>&nbsp;&nbsp;&nbsp;&nbsp;#进行求余数运算即可<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $retnum;<br/>&nbsp;&nbsp;&nbsp;&nbsp;#这里通过echo 打印出来值，然后获得函数的，stdout就可以获得值<br/>&nbsp;&nbsp;&nbsp;&nbsp;#还有一种返回，定义全价变量，然后函数改下内容，外面读取<br/>&#125;<br/> <br/>#得到1-10的seq数据项<br/>for i in &#123;1..10&#125;;<br/>do <br/>&nbsp;&nbsp;&nbsp;&nbsp;out=$(random 2 10000);<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $i,&quot;2-10000&quot;,$out;<br/>done;</div><br/>看看运行结果：<br/><br/>[chengmo@centos5&nbsp;&nbsp;shell]$ sh testrandom.sh<br/>1,2-10000,5600<br/>2,2-10000,5295<br/>3,2-10000,3432<br/>4,2-10000,3148<br/>5,2-10000,9041<br/>6,2-10000,4290<br/>7,2-10000,2380<br/>8,2-10000,9009<br/>9,2-10000,5474<br/>10,2-10000,3664<br/><br/>一个循环里面，得到值各不相同。<br/><br/>这个是我们常用方法，适应各种语言，是一个通用算法，就算服务器不提供，某时刻相同唯一数据标记，我们也可以通过这种方法，做自己的伪随机数。<br/><br/>来源：http://www.cnblogs.com/chengmo/archive/2010/10/23/1858879.html<br/>More: http://blog.csdn.net/fdipzone/article/details/24329523
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] linux shell实现随机数多种方法,shell 生成指定范围随机数与随机字符串.]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>