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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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 до миллиона) на больших диапазонах нужно использовать специальную генерацию прсевдослучайных чисел
28
easypeasy, достаточно было просто с бумажкой посидеть над моим решением.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.