Задача такая: имеется целочисленная переменная, допустим диапазон чисел будет от 1 до 10.
Каждые 2 сек. нужно выдавать рандомное значение этой переменной от 1 до 10, при этом чтобы значения не повторялись пока все значения не будут выданы, только gui
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
13
TheMilka, половина не понял, а в этом триггере сработает сразу 10 циклов?только как выдать только 1 значение и спустя какое то время или событие, выдать другое

Присваиваем Initial[idx] значение Initial[InitialTop].
Присваиваем InitialTop значение (InitialTop - 1).
Если InitialTop равно -1, то тогда сбрасываем массив Initial и InitialTop в начальное состояние.
а это случайно не значит что если первое число, например, выпадет 6 то последующие выпадающие будут меньше 6?

ладно, спасибо буду разбираться
7
easypeasy:
TheMilka, половина не понял, а в этом триггере сработает сразу 10 циклов?только как выдать только 1 значение и спустя какое то время или событие, выдать другое

Присваиваем Initial[idx] значение Initial[InitialTop].
Присваиваем InitialTop значение (InitialTop - 1).
Если InitialTop равно -1, то тогда сбрасываем массив Initial и InitialTop в начальное состояние.
а это случайно не значит что если первое число, например, выпадет 6 то последующие выпадающие будут меньше 6?

ладно, спасибо буду разбираться
эта система создаёт 10 значений. из них ты каждым вызовом берёшь рандомное без повторений. можно ещё добавить, чтобы система обновлялась каждый раз, когда числа внутри ней заканчиваются.
28
а это случайно не значит что если первое число, например, выпадет 6 то последующие выпадающие будут меньше 6?
Нет, результат хранится в переменной Result.
13
TheMilka, PT153, в итоге запилил такой рабочий вариант, без действия wait при быстром нажатии Esc варик крашится, а с действием wait 0 почему то нет
Загруженные файлы
13
Extremator, отвечаю не пойму как после действия Set Max=(Max-1) последующие выпадающие числа могут быть больше текущей выпавшей..
26
easypeasy, тебе выпадает например число 7 в Random от 1 до 10 (т.е. до Max).
Ты берёшь Value[7], оно равно числу 7.
После использования ты пишешь set Value[Random] = Value[Max]
т.е. Value[7] = Value[10] ... т.е. ты даёшь Value[7] значение 10
Теперь у тебя записаны числа 1 2 3 4 5 6 10 8 9 10
Дальше ты делаешь Max = Max - 1 и оно становится равно 9
т.е. в следующий раз рандомить будет от 1 до 9
10й номер со значением 10 участвовать не будет
но само число 10 будет использоваться в 7м номере
Остаётся 1 2 3 4 5 6 10 8 9 - т.е. все 9 цифр, кроме цифры 7
В следующий раз ты получаешь Random и тебе выпадает число 3
Ты используешь значение Value[3] (там число 3)
После этого ты заменяешь значение в слоте 3 на то что у тебя в последнем (в 9)
set Value[Random] = Value[Max]
т.е. Value[3] = Value[9]
Тут ты уже имеешь слоты с числами 1 2 9 4 5 6 10 8 9
Дальше опять делаешь ( Max - 1 ) и устраняешь крайнюю девятку
Остаётся 1 2 9 4 5 6 10 8 - т.е. уже 8 чисел
при этом среди низ нет 3 и нет 7
и так далее... в итоге ты дойдёшь до рандома между 1 и 1 ... и получишь 1, тогда твой Value[1] будет иметь значение последнего числа, которое до сих пор не выпало и/или перезаписывалось.
Дальше ты можешь опять вызвать первый триггер, для того что бы он записал тебе Max=10 и все остальные варианты переменных (Value[x]=x).
24
Extremator, рекомендую небольшое улучшение алгоритма - не просто записывать последнюю ячейку в выпавшую, а менять их местами. Тогда можно будет массив использовать повторно, не заполняя его заново.
13
Extremator, офигеть, как ты додумался до такого алгоритма, я его допёр только когда ты его разжевал. Спасибо
22
easypeasy, это основа программирование лол. Все его так делают
38
Всё бы хорошо, но идея рушится как только надо от 1 до миллиона) на больших диапазонах нужно использовать специальную генерацию прсевдослучайных чисел
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.