<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Как сделать Random без повтора ?]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=9192&amp;type=atom" />
	<updated>2014-02-01T17:52:08Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=9192</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79676#p79676" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>чтобы перед тем как писать текст, который вписан в Action, нажималась кнопочка F6.</p></blockquote></div><div class="codebox"><pre><code>SendInput % &quot;{F6}{Raw}&quot; Str &quot;`n&quot; </code></pre></div><div class="quotebox"><blockquote><p>И еще, сделать так, чтобы можно было в любое время остановить бинд, после чего можно продолжить его.</p></blockquote></div><p>Ну у тебя же в топике применено:<br /></p><div class="codebox"><pre><code>a::Pause</code></pre></div><p>чем не устраивает?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-02-01T17:52:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79676#p79676</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79654#p79654" />
			<content type="html"><![CDATA[<p>Ребята, большое Вам спасибо. Помогли! Взял себе вот это: </p><div class="codebox"><pre><code>arr := [], i := 0
Action := [&quot;testone&quot;, &quot;testtwo&quot;, &quot;testthree&quot;, &quot;testfour&quot;, &quot;testfive&quot;
    , &quot;testsix&quot;, &quot;testseven&quot;, &quot;testeight&quot;, &quot;testnine&quot;, &quot;testten&quot;]
   
1::
Random: 
    If (i = 10)  
    {
        arr := [], i := 0, r := &quot;&quot;
        Return
    }    
    Random, rand, 1, 10
    If arr[rand]
        GoTo Random
    arr[rand] := 1, i++
    SendRaw % Action[rand] &quot;`n&quot; 
    Sleep, 1000
    GoTo Random </code></pre></div><p>Но хотелось бы еще кое что у Вас попросить, а именно: сделать так, чтобы перед тем как писать текст, который вписан в Action, нажималась кнопочка F6. Что-то такого:</p><div class="codebox"><pre><code>Send, {F6}text{enter}</code></pre></div><p>И еще, сделать так, чтобы можно было в любое время остановить бинд, после чего можно продолжить его. Зарание спасибо, ребята! <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Kapysta]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31671</uri>
			</author>
			<updated>2014-02-01T10:17:28Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79654#p79654</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79594#p79594" />
			<content type="html"><![CDATA[<p>Здорово. А я и не вспомнил про такой вариант сортировки. Так еще проще и наглядней <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2014-01-31T13:40:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79594#p79594</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79590#p79590" />
			<content type="html"><![CDATA[<p>Кстати для &quot;простых случаев&quot;, можно и просто:<br /></p><div class="codebox"><pre><code>
Str = testone|testtwo|testthree|testfour|testfive|testsix|testseven|testeight|testnine|testten 

1::
    Sort, Str, Random D|
    Loop, parse, Str, |
        SendInput % &quot;{Raw}&quot; A_LoopField &quot;`n&quot;
    Return
</code></pre></div><p>Или сократить для ещё более простых:<br /></p><div class="codebox"><pre><code>
Str = testone`ntesttwo`ntestthree`ntestfour`ntestfive`ntestsix`ntestseven`ntesteight`ntestnine`ntestten 

1::
    Sort, Str, Random 
    SendInput % &quot;{Raw}&quot; Str
    Return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-01-31T12:17:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79590#p79590</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79569#p79569" />
			<content type="html"><![CDATA[<p>Алгоритмы - дело наживное, для этого и существуют форумы <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /><br />Еще поправка к коду: оказывается (вполне логично), что метод Remove() возвращает удаленное значение, или же пустую строку, в случае неверного параметра. Так что обработку очередного элемента можно недрогнувшей рукой совместить с удалением этого элемента <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br /></p><div class="codebox"><pre><code>F1::
   tArr := Arr.Clone()
   While % i:=tArr.MaxIndex() {
      Random, i, 1, i
      Send % tArr.Remove(i) . &quot;`n&quot;
   }
Return</code></pre></div><p>Непонятно, в силу каких причин в AHK генерация псевдослучайных чисел не реализована в виде функции, ведь так было бы удобней. Приходится использовать функцию-&quot;обертку&quot; Rand(), без которой код сократился бы еще на несколько строк:<br /></p><div class="codebox"><pre><code>Arr := [&quot;testone&quot;, &quot;testtwo&quot;, &quot;testthree&quot;, &quot;testfour&quot;, &quot;testfive&quot;
     , &quot;testsix&quot;, &quot;testseven&quot;, &quot;testeight&quot;, &quot;testnine&quot;, &quot;testten&quot;]
   
F1::
   tArr := Arr.Clone()
   While % i:=tArr.Remove(Rand(tArr.MaxIndex()))
      Send % i . &quot;`n&quot;
Return

Rand(i) {
   Random, i, 1, i
   Return i
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2014-01-30T20:21:29Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79569#p79569</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79561#p79561" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>но я бы применил его таким образом:</p></blockquote></div><p>Я бы тоже, если бы догадался <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Класс!</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-01-30T18:15:14Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79561#p79561</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79560#p79560" />
			<content type="html"><![CDATA[<p>Со списком проще всего, но я бы применил его таким образом: </p><div class="codebox"><pre><code>Arr := [&quot;testone&quot;, &quot;testtwo&quot;, &quot;testthree&quot;, &quot;testfour&quot;, &quot;testfive&quot;
     , &quot;testsix&quot;, &quot;testseven&quot;, &quot;testeight&quot;, &quot;testnine&quot;, &quot;testten&quot;]
   
F1::
   tArr := Arr.Clone()
   While % i:=tArr.MaxIndex() {
      Random, i, 1, i
      Send % tArr[i] . &quot;`n&quot;
      tArr.Remove(i)
   }
Return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2014-01-30T18:07:18Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79560#p79560</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79549#p79549" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
arr := [], i := 0

1::
Random: 
    If (i = 10) 
        arr := [], i := 0 ; строку заменить на &quot;Return&quot; если повтор не требуется
    Random, rand, 1, 10
    If arr[rand]
        GoTo Random
    arr[rand] := 1, i++
    ToolTip % r .= rand &quot;`n&quot; (i = 10 ? &quot;`n&quot; : &quot;&quot;)
    Return
</code></pre></div><p>Или может так:<br /></p><div class="codebox"><pre><code>

arr := [], i := 0
Action := [&quot;testone&quot;, &quot;testtwo&quot;, &quot;testthree&quot;, &quot;testfour&quot;, &quot;testfive&quot;
    , &quot;testsix&quot;, &quot;testseven&quot;, &quot;testeight&quot;, &quot;testnine&quot;, &quot;testten&quot;]
   
1::
Random: 
    If (i = 10)  
    {
        arr := [], i := 0, r := &quot;&quot;
        Return
    }    
    Random, rand, 1, 10
    If arr[rand]
        GoTo Random
    arr[rand] := 1, i++
    SendRaw % Action[rand] &quot;`n&quot; 
    Sleep, 1000
    GoTo Random 
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-01-30T16:04:29Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79549#p79549</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79546#p79546" />
			<content type="html"><![CDATA[<p>Как только я запустил скрипт, генерируются числа, которые приводят в действие что-то, в моем случае:</p><div class="codebox"><pre><code>r::
l:
Random, rand, 1,10

if rand=1
Send, testone

if rand=2
Send, testtwo

if rand=3
Send, testthree

if rand=4
Send, testfour

if rand=5
Send, testfive

if rand=6
Send, testsix

if rand=7
Send, testseven

if rand=8
Send, testeight

if rand=9
Send, testnine

if rand=10
Send, testten

Sleep, 1000

Goto, l

a::Pause</code></pre></div><p>Ранее я написал не так, как должно быть. Вы подумали, что мне нужны просто рандомные числа, но это не так. </p><br /><p>Должен быть текст в рандомном порядке, но без повторов. Если уже сгенерировалось все 10 возможных текстов - бинд останавливается. В итоге должно быть 10 разных текстов без повторов, понимаете ? Перед тем, как делать генерацию рандомных действий, должна быть проверка на то, было ли уже использовано данное действие. Надеюсь, Вы понимаете о чем я.</p>]]></content>
			<author>
				<name><![CDATA[Kapysta]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31671</uri>
			</author>
			<updated>2014-01-30T15:23:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79546#p79546</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79545#p79545" />
			<content type="html"><![CDATA[<p>Такой вариант должен подойти.<br /></p><div class="codebox"><pre><code>r::
Loop
{
Random, rand, 1, 10
If rand != %prev_rand%
    {
    Send, %rand%
    Sleep, 1000
    prev_rand = %rand%
    }
}

a::Pause</code></pre></div><p><em>Добавлено:</em> Так это, число не должно повторять одно предыдущее или все предыдущие числа?</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2014-01-30T15:09:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79545#p79545</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79542#p79542" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>ypppu пишет:</cite><blockquote><div class="quotebox"><blockquote><p>у меня все время идут повторы, что мне не нужно</p></blockquote></div><p>В каком смысле?</p></blockquote></div><p>Повторяется рандомное число, которое приводит в действие что либо.<br />Бинд должен работать до тех пор, пока не используются все возможные варианты (все рандомные числа), но при этом ничего не должно повторяться.</p>]]></content>
			<author>
				<name><![CDATA[Kapysta]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31671</uri>
			</author>
			<updated>2014-01-30T14:51:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79542#p79542</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79541#p79541" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>у меня все время идут повторы, что мне не нужно</p></blockquote></div><p>В каком смысле?</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2014-01-30T14:44:14Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79541#p79541</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Как сделать Random без повтора ?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79538#p79538" />
			<content type="html"><![CDATA[<p>Здравствуйте, ув. пользователи данного форума. Нужна Ваша помощь. Решил сделать рандом, но у меня все время идут повторы чисел, что мне не нужно. Искал ответ, как можно сделать так, чтобы их не было - ничего не нашел. Если Вам не сложно, помогите мне. Вот, примерно такой скрипт у меня. Нужно сделать без повторов, если это возможно. Зарание спасибо <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p><div class="codebox"><pre><code>
r::
l:
Random, rand, 1,10

if rand=1
Send, 1

if rand=2
Send, 2

if rand=3
Send, 3

if rand=4
Send, 4

if rand=5
Send, 5

if rand=6
Send, 6

if rand=7
Send, 7

if rand=8
Send, 9

if rand=9
Send, 9

if rand=10
Send, 10

Sleep, 1000

Goto, l

a::Pause
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Kapysta]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31671</uri>
			</author>
			<updated>2014-01-30T14:17:43Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79538#p79538</id>
		</entry>
</feed>
