<?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>Valentin Popescu &#187; C</title>
	<atom:link href="http://www.valicu.info/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.valicu.info</link>
	<description>Viata in 0 si 1</description>
	<lastBuildDate>Sun, 05 Feb 2012 19:03:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Generare aleatoare de numere in C</title>
		<link>http://www.valicu.info/generare-aleatoare-de-numere-in-c/</link>
		<comments>http://www.valicu.info/generare-aleatoare-de-numere-in-c/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 21:19:56 +0000</pubDate>
		<dc:creator>Valentin Popescu</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programare]]></category>
		<category><![CDATA[Tutoriale]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[generare numere in C]]></category>
		<category><![CDATA[numere aleatoare in C]]></category>
		<category><![CDATA[programare in C]]></category>
		<category><![CDATA[random numbers in C]]></category>

		<guid isPermaLink="false">http://www.valicu.info/?p=488</guid>
		<description><![CDATA[<p>Am avut nevoie de generare aleatoare de numere in C sub Ubuntu si nu am stiut cum se face asa ca m-am documentat putin si cum nu am gasit niciun site romanesc in care sa fie explicat, m-am gandit ca ar fi bine sa explic eu. Numerele aleatoare sunt... <a href="http://www.valicu.info/generare-aleatoare-de-numere-in-c/">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Am avut nevoie de generare aleatoare de numere in C sub Ubuntu si nu am stiut cum se face asa ca m-am documentat putin si cum nu am gasit niciun site romanesc in care sa fie explicat, m-am gandit ca ar fi bine sa explic eu.</p>
<p style="text-align: justify;">Numerele aleatoare sunt folosite de obicei pentru a genera evenimente aleator, ca de exemplu in jocurile de noroc, experimente, s.a.m.d. In practica nu exista o functie care sa genereze date aleator, defapt se generaza numere pseudo-aleatoare. Deci se va folosi o formula pentru a genera aceste numere, iar secventele de numere se pot repeta. Pentru a putea face acest lucru, trebuie setat o &#8220;sursa&#8221; (seed) de unde sa se plece cu generarea secventelor asa ca, setand mereu acelasi seed vom avea mereu aceeasi secventa.</p>
<p style="text-align: justify;">Una dintre cele mai la indemana solutii pentru a seta o &#8220;sursa&#8221;(seed) este aceea de a folosi ora si data curenta a sistemului (pentru ca aceastea se schimba continuu). Exista multe functii care genereaza secvente pseudo-aleator insa toate functioneaza dupa aceleasi principii.</p>
<p style="text-align: justify;">Cea mai simpla este:</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p488code1'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4881"><td class="code" id="p488code1"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> srand<span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> seed<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
rand<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Unde</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p488code2'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4882"><td class="code" id="p488code2"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> srand<span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> seed<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>este declaratia functiei care seteaza &#8220;sursa&#8221;.<br />
Ea va fi apelata astfel:</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p488code3'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4883"><td class="code" id="p488code3"><pre class="c" style="font-family:monospace;">srand<span style="color: #009900;">&#40;</span>time<span style="color: #009900;">&#40;</span>NULL<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Iar</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p488code4'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4884"><td class="code" id="p488code4"><pre class="c" style="font-family:monospace;">rand<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>va genera numarul aleator de la 0 la 2<sup>15</sup>-1.<br />
Pentru a fi cat mai usor de inteles, am sa ilustrez modul in care aceste functii pot fi folosite intr-un mic program.</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p488code5'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4885"><td class="code" id="p488code5"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include </span>
<span style="color: #339933;">#include </span>
<span style="color: #339933;">#include  //includem time.h pentru a putea folosi functia time();</span>
<span style="color: #993333;">void</span> srand <span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> seed<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> a<span style="color: #339933;">;</span>
	srand<span style="color: #009900;">&#40;</span>time<span style="color: #009900;">&#40;</span>NULL<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//setare &quot;sursa&quot;(seed)</span>
	a <span style="color: #339933;">=</span> rand<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//genereaza continut aleator</span>
	<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Numarul generat aleator este: %d <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Pentru a genera si numere negative puteti folosi una din functiile:</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p488code6'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4886"><td class="code" id="p488code6"><pre class="c" style="font-family:monospace;">mrand48<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//sau</span>
jrand48<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>care genereaza numere intre -2<sup>31</sup> si 2<sup>31</sup>.<br />
La final, daca ati compilat programul, ati putut observa ca numerele generate sunt destul de mari. Pentru a limita superior generarea acestora folositi:</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p488code7'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4887"><td class="code" id="p488code7"><pre class="c" style="font-family:monospace;">a <span style="color: #339933;">=</span> rand<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span>n<span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>unde n este valoarea maxima (fara ea) pana la care se vor genera numere.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.valicu.info/generare-aleatoare-de-numere-in-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

