<?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; Math</title>
	<atom:link href="http://murejib.com/tag/math/feed/" rel="self" type="application/rss+xml" />
	<link>http://murejib.com</link>
	<description>flash, actionscript, animation, анимация</description>
	<lastBuildDate>Sat, 31 Mar 2012 12:15:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>expRandom.</title>
		<link>http://murejib.com/2007/12/12/exprandom/</link>
		<comments>http://murejib.com/2007/12/12/exprandom/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 16:04:15 +0000</pubDate>
		<dc:creator>murejib</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[fx]]></category>
		<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://murejib.com/?p=25</guid>
		<description><![CDATA[Иногда бывает нужно, чтобы случайное число с большей вероятностью выпадало ближе к минимальным, или максимальным значениям. Простой пример &#8211; Слот машина. Бонусные символы должны выпадать гораздо реже обычных символов. Существует масса способов реализовать такой рандом, о них, к примеру была речь на форуме flash-mx Вот и мне тут понадобилась такая функция. Некогда мною было написано [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда бывает нужно, чтобы случайное число с большей вероятностью выпадало ближе к минимальным, или максимальным значениям.</p>
<p><span id="more-23"></span></p>
<p>Простой пример &#8211; Слот машина.<br />
Бонусные символы должны выпадать гораздо реже обычных  символов.<br />
Существует масса способов реализовать такой рандом, о них, к примеру была речь на форуме <a href="http://flash-mx.ru/forum/topic_show.pl?tid=223">flash-mx</a></p>
<p>Вот и мне тут понадобилась такая функция.</p>
<p>Некогда мною  было написано некоторое количество игр для казино, все они быи завязаны на сервер, который нынче мертв.  Жалко мне стало игрушек &#8211; красивые были, вот я сейчас и пишу аля-эмулятор сервера со всей логикой игры. Как раз тут вопрос и возник.<br />
Более того мне необходимо, что бы числа возвращались в жестко заданном диапазоне.<br />
Немного мозгового скрипа дало мне вот такую функцию.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> expoRandom<span style="color: #66cc66;">&#40;</span>range:<span style="color: #0066CC;">Number</span>,w:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Number</span>
<span style="color: #66cc66;">&#123;</span>
   w = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">max</span><span style="color: #66cc66;">&#40;</span>w,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
   w = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">min</span><span style="color: #66cc66;">&#40;</span>w,<span style="color: #cc66cc;">709</span><span style="color: #66cc66;">&#41;</span>;
   <span style="color: #b1b100;">return</span> <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>+<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">exp</span><span style="color: #66cc66;">&#40;</span>w<span style="color: #66cc66;">&#41;</span>-<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#40;</span>range<span style="color: #66cc66;">/</span>w<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>В функцию передается два параметра &#8211; собственно диапазон, и, не знаю как это правильно обозвать, степень разброса. От это степени зависит насколько сильно выпадающие значения будут тесниться к максимальному краю. Чем больше степень, тем ближе к краю.</p>
<p>В функцию вставлена небольшая проверка &#8211; чтобы ширина не была меньше 1 (в этом случае мы получим обычный рандом) и не была больше 709 (в этом случае выражение Math.exp(w) даст нам infinity). Их собсвенно можно убрать, дабы не забивать процессор лишней работой.</p>
<p>Вся магия тут завязана на простой принцип &#8211; есть график логарифма. Мы берем случайное число по оси X и находим его логарифм по оси Y. Немного корректируем под наш диапазон &#8211; и результат на лице.</p>
<p>Вот к примеру такой:<br />
<a href="http://bbexp.ru/blog/_stuff/random.html"> http://bbexp.ru/blog/_stuff/random.html</a></p>
<img src="http://murejib.com/?ak_action=api_record_view&id=23&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://murejib.com/2007/12/12/exprandom/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

