1

Тема: AHK: Random без повтора последних трех чисел

Здравствуйте, есть следующий код:

 Random, var, 1, 10

Как мне сделать так, чтобы при срабатывании, функция "вспоминала" последние три числа, что она генерировала ранее и не отправляла их соответственно. Ну если это сложно слишком, то хотя бы последнее не отправляла. Заранее спасибо.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

2

Re: AHK: Random без повтора последних трех чисел

Как-то так:

min := 1, max := 10
randArray := CreateRandArray(min, max)

F11:: MsgBox % MyRandom(randArray, 3)

MyRandom(randArray, exclude)  {
   static i := 0
   Random, rand, 1 + (i < exclude ? i++ : i), randArray.MaxIndex()
   n := randArray.RemoveAt(rand), randArray.InsertAt(1, n)
   Return n
}
      
CreateRandArray(min, max)  {
   array := []
   while min < max + 1
      array.Push(min++)
   Return array
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Random без повтора последних трех чисел

Проблема решена, спасибо.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

4

Re: AHK: Random без повтора последних трех чисел

Работает с положительными целыми числами.

5

Re: AHK: Random без повтора последних трех чисел

А с отрицательными не работает разве?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Random без повтора последних трех чисел

Ещё раз проверил - с отрицательными работает. Главное чтоб min было меньше max.