<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>风过明岚,雁过留痕 &#187; rand</title>
	<atom:link href="http://blog.kingse.org/tag/rand/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.kingse.org</link>
	<description>杂七杂八,想啥说啥</description>
	<lastBuildDate>Sat, 04 Sep 2010 14:21:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>srand,rand函数的使用注意事项</title>
		<link>http://blog.kingse.org/2010/01/291.html</link>
		<comments>http://blog.kingse.org/2010/01/291.html#comments</comments>
		<pubDate>Tue, 12 Jan 2010 02:54:18 +0000</pubDate>
		<dc:creator>coolspace</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[rand]]></category>
		<category><![CDATA[srand]]></category>

		<guid isPermaLink="false">http://blog.kingse.org/?p=291</guid>
		<description><![CDATA[在实际应用中，我们经常需要产生随机数，这些随机数的应用范围也是十分广泛的。但计算机只能依据一定算法产生伪随机数序列。c语言中最常用的产生伪随机数序列的函数是srand和rand
srand，rand函数在实现上利用TlsGetValue等一系列函数进行数据的存取，也就意味着srand，rand存取的数据是和线程相关的。
根据我使用经验，总结出以下几点注意事项：
1、rand函数初次使用之前必须调用srand函数初始化，才能保证产生不同的随机数序列。
2、在多线程程序中，如果每个线程都需要调用rand，那么必须在每个线程里单独进行初始化。
3、单进程的srand初始化，可以简单的采用time(0)即可，但是多线程中，如果每个线程的开始时间近乎相同，那么就不可采用time(0)进行初始化，因为time(0)实际精度只有s级，会导致每个线程产生相同的随机数序列，因此需要用每个线程各不相同的一个数去初始化srand，例如threadid等等

                            
                           [...]]]></description>
			<content:encoded><![CDATA[<p>在实际应用中，我们经常需要产生随机数，这些随机数的应用范围也是十分广泛的。但计算机只能依据一定算法产生伪随机数序列。c语言中最常用的产生伪随机数序列的函数是srand和rand</p>
<p>srand，rand函数在实现上利用TlsGetValue等一系列函数进行数据的存取，也就意味着srand，rand存取的数据是和线程相关的。</p>
<p>根据我使用经验，总结出以下几点注意事项：</p>
<p>1、rand函数初次使用之前必须调用srand函数初始化，才能保证产生不同的随机数序列。</p>
<p>2、在多线程程序中，如果每个线程都需要调用rand，那么必须在每个线程里单独进行初始化。</p>
<p>3、单进程的srand初始化，可以简单的采用time(0)即可，但是多线程中，如果每个线程的开始时间近乎相同，那么就不可采用time(0)进行初始化，因为time(0)实际精度只有s级，会导致每个线程产生相同的随机数序列，因此需要用每个线程各不相同的一个数去初始化srand，例如threadid等等</p>

                            <div id="downaspdf">
                                <a href="http://blog.kingse.org/wp-content/plugins/down-as-pdf/generate.php?id=291">
                                    <span>下载本文PDF文档</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.kingse.org/2010/01/291.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
