<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: приоритет вывода значений из массива]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11372&amp;type=atom" />
	<updated>2016-03-02T20:50:18Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11372</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: приоритет вывода значений из массива]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101599#p101599" />
			<content type="html"><![CDATA[<p>Благодарю за помощь! Сам бы не догадался ( или догадался, но очень не скоро)!</p>]]></content>
			<author>
				<name><![CDATA[Veranda]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33724</uri>
			</author>
			<updated>2016-03-02T20:50:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101599#p101599</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: приоритет вывода значений из массива]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101598#p101598" />
			<content type="html"><![CDATA[<p>Так гарантированно из сотни выпадут все варианты в случайном порядке, но в указанном количестве:<br /></p><div class="codebox"><pre><code>
oCoord := [{x:100,y:100,v:30},{x:300,y:500,v:10},{x:500,y:300,v:20},{x:500,y:500,v:5},{x:400,y:10,v:34},{x:50,y:600,v:1}]
  
For k, v in oCoord, oSum := []
    Loop % v.v
        oSum.Push(k)  

1::	
	If !tSum.MaxIndex() 
		tSum := oSum.Clone()  
	Random, iRand, 1, tSum.MaxIndex()   
	oPoint := oCoord[tSum.Remove(iRand)] 
	Random,RX,0,50
	Random,RY,0,60
	MouseMove, % oPoint.x + RX, % oPoint.y + RY , 0
	ToolTip % &quot;X:&quot; oPoint.x + RX &quot;`nY:&quot; oPoint.y + RY
	Return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-03-02T20:06:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101598#p101598</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: приоритет вывода значений из массива]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101595#p101595" />
			<content type="html"><![CDATA[<p>Но вообще эти варианты относительны. Например то что должно выпасть 1 из 100, может выпасть один раз из тысячи, или 5 раз из ста. <br />Если из ста нужно точное совпадение &quot;разбросов&quot;, то нужно ещё и <a href="http://forum.script-coding.com/viewtopic.php?pid=79569#p79569">это прикрутить</a>.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-03-02T19:40:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101595#p101595</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: приоритет вывода значений из массива]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101594#p101594" />
			<content type="html"><![CDATA[<p>Или так:<br /></p><div class="codebox"><pre><code>
oCoord := [{x:100,y:100,v:30},{x:300,y:500,v:10},{x:500,y:300,v:20},{x:500,y:500,v:5},{x:400,y:10,v:34},{x:50,y:600,v:1}]
For k, v In oCoord, _Sum := 0  
	_Sum += v.v 

1::
	Random, Peek, 1, _Sum
	For k, v In oCoord, Sum := 0
		Sum += v.v
	Until Sum &gt;= Peek &amp;&amp; (Rpos := k) 
	Random,RX,0,50
	Random,RY,0,60
	MouseMove, % oCoord[Rpos].x + RX, % oCoord[Rpos].y + RY , 0
	ToolTip % &quot;X:&quot; oCoord[Rpos].x + RX &quot;`nY:&quot; oCoord[Rpos].y + RY
	Return
</code></pre></div><p><a href="http://forum.script-coding.com/viewtopic.php?id=10668">Была тема.</a></p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-03-02T19:25:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101594#p101594</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: приоритет вывода значений из массива]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101577#p101577" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>coord := [{x:100,y:100},{x:300,y:500},{x:500,y:300},{x:500,y:500},{x:400,y:10},{x:50,y:600}]

1::
	Rpos := StrSplit( WRandom(&quot;30,10,20,5,34,1&quot;,1) ,&quot;,&quot;).1 ; на 6 штук и у каждого свой шанс выпадения.
	Random,RX,0,50
	Random,RY,0,60
	MouseMove, % coord[Rpos].x + RX, % coord[Rpos].y + RY , 0
	ToolTip % &quot;X:&quot; coord[Rpos].x + RX &quot;`nY:&quot; coord[Rpos].y + RY
	Return
	
	
;http://www.autohotkey.com/community/viewtopic.php?f=2&amp;t=47586
WRandom(p_FieldString,p_Chance=false,p_P2D=false,p_D2P=false)
{
  Loop, Parse, p_FieldString, `,
    l_Tot += A_LoopField
  Random, l_Sum, 0, % l_Tot
  Loop, Parse, p_FieldString, `,
    If ( 0 &gt;= l_Sum -= A_LoopField )
      Return A_Index ( p_Chance ? &quot;,&quot; (100*A_LoopField)/l_Tot : &quot;&quot; ) ( p_P2D ? &quot;,&quot; l_Tot/100 : &quot;&quot; ) ( p_D2P ? &quot;,&quot; 100/l_Tot : &quot;&quot; )
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2016-03-02T12:02:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101577#p101577</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: приоритет вывода значений из массива]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101576#p101576" />
			<content type="html"><![CDATA[<p>Вопрос: как можно задать приоритет вывода для значений из массива? Чтобы какие-либо из значений внутри массива можно было выводить с большей частотой, чем остальные..:/ <br />Использую следующий код в работе:</p><div class="codebox"><pre><code>coord := [{x:100,y:100},{x:300,y:500},{x:500,y:300},{x:500,y:500},{x:400,y:10},{x:50,y:600}]

1::
	Random,Rpos,1,% coord.MaxIndex()
	Random,RX,0,50
	Random,RY,0,60
	MouseMove, % coord[Rpos].x + RX, % coord[Rpos].y + RY , 0
	ToolTip % &quot;X:&quot; coord[Rpos].x + RX &quot;`nY:&quot; coord[Rpos].y + RY
	Return</code></pre></div><br /><p>Пример: я запускаю данный код через цикл из 10 повторов. По окончании цикла - вывод значений из массива в процентом соотношении таким примерно должен получится:<br />{x:100,y:100} - 30%<br />{x:300,y:500}-10%<br />{x:500,y:300}-20%<br />{x:500,y:500}-5%<br />{x:400,y:10}-34%<br />{x:50,y:600}-1%</p><p>З.Ы код от многоуважаемого serzh82saratov</p>]]></content>
			<author>
				<name><![CDATA[Veranda]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33724</uri>
			</author>
			<updated>2016-03-02T10:34:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101576#p101576</id>
		</entry>
</feed>
