3 случайные числа и чтоб не совпадали

Поддержка
  • @verhov
    Вы можете также реализовать это через создание списка из цифр от 1 до 9.
    Берете случайное значение и тут же удаляете оттуда элемент по этому же значению. Следующий взятый элемент не будет равен предыдущему в этом случае.
    Для повторения итерации просто возвращаетесь по метке к созданию списка, либо оборачиваете всю конструкцию в функцию и вызываете ее в нужный момент. С метками кажется изящнее, хоть и не люблю их.

  • @xclsv said in 3 случайные числа и чтоб не совпадали:

    Для повторения итерации просто возвращаетесь по метке к созданию списка, либо оборачиваете всю конструкцию в функцию и вызываете ее в нужный момент. С метками кажется изящнее, хоть и не люблю их.

    так поток закончится и завершится, соответственно при вызове потока для другого номера список будет заполнятся заново, так? Заполнение списка в самом начале сделать. Список(0,,,,8) значениями 1,,,9

    Как бы еще тыркание сделать, куча ифов совсем не нравится. Хотя, for 1-9, и 9 ифов, случайное значение из списка сравниваем и вызываем функцию тырк1-9.
    Вечером попробую сгородить.

  • @verhov
    В первом сообщении Вы ничего не сообщали про многопоточность и условия работы с ней.
    Безусловно, если разные числа одного списка нужны в разных потоках, то лучше делать через ресурс. Есть ещё какие-то глобальные списки, но не уверен, что это будет хорошим решением.

  • @xclsv said in 3 случайные числа и чтоб не совпадали:

    В первом сообщении Вы ничего не сообщали про многопоточность и условия работы с ней.

    да как то это по умолчания предполагается :))))

    @xclsv said in 3 случайные числа и чтоб не совпадали:

    Безусловно, если разные числа одного списка нужны в разных потоках, то лучше делать через ресурс. Есть ещё какие-то глобальные списки, но не уверен, что это будет хорошим решением.

    Хм, а разве созданный список в текущем потоке будет виден в других потоках?

  • @verhov said in 3 случайные числа и чтоб не совпадали:

    да как то это по умолчания предполагается :))))

    Ничего, что не написано в ТЗ по умолчанию не предполагается.

    @verhov said in 3 случайные числа и чтоб не совпадали:

    Хм, а разве созданный список в текущем потоке будет виден в других потоках?

    Глобальные списки должны быть видны. Также как и глобальные переменные.
    Эксперт в этом вопросе господин @senerg.

  • @xclsv said in 3 случайные числа и чтоб не совпадали:

    Глобальные списки должны быть видны. Также как и глобальные переменные.

    а зачем мне глобальный список? мне то случайные выпадения нужны в рамках одного потока.

  • @verhov said in 3 случайные числа и чтоб не совпадали:

    а зачем мне глобальный список? мне то случайные выпадения нужны в рамках одного потока.

    Прошу прощения. Неправильно понял Вас в этом сообщении:

    @verhov said in 3 случайные числа и чтоб не совпадали:

    так поток закончится и завершится, соответственно при вызове потока для другого номера список будет заполнятся заново, так? Заполнение списка в самом начале сделать. Список(0,,,,8) значениями 1,,,9

    Да. В рамках одного потока можно использовать обычный список. Всё должно работать.

  • @xclsv said in 3 случайные числа и чтоб не совпадали:

    Да. В рамках одного потока можно использовать обычный список. Всё должно работать.

    Спасибо, освобожусь, вечером попробую.

  • @verhov Лень было читать всю вашу переписку. Вот на коленке написал генератор, будет перебирать целые числа в заданном диапазоне, когда доступные значения закончатся, то очистит пул использованных значений и начнет заново

    randomNumber = function(a,b) {
        this.was_used = [],
        this.a = a,
        this.b = b	
    };
    
    randomNumber.prototype.get = function(){
        while(true){
            var randomNum = Math.floor(Math.random() * (this.b-this.a + 1)) + parseInt(this.a);
            if(this.was_used.indexOf(randomNum)< 0) {
                this.was_used.push(randomNum);
                return randomNum;
            };
            if(this.was_used.length == this.b - this.a + 1) this.clear(); //Если кончились доступные знаяения обнуляем
        };
    };
    
    randomNumber.prototype.clear =function(){   //Очистка использованных значений
        this.was_used = [];
    };
    
    randNum = new randomNumber(1,10) //Создает новый генератор чисел в заданном диапазоне
    log( randNum.get() );
    
  • @verhov said in 3 случайные числа и чтоб не совпадали:

    автоматизация игры в ленте :) там каждые сутки можно зайти и потыркать 9 кнопок, игра на канвасе, приходится по координатам тыркать. может на первом тырке получится облом, а может на 5, но на 8 точно чтото попадется.

    Так может сделать фотку кнопок и безошибочно тыкать сразу по кнопкам, место координат?

  • @uraabk said in 3 случайные числа и чтоб не совпадали:

    Так может сделать фотку кнопок и безошибочно тыкать сразу по кнопкам, место координат?

    Это как то упростит работу скрипта?

  • @usertrue
    тут совсем не понял :) на простом списке лучше остановлюсь :)

  • @verhov said in 3 случайные числа и чтоб не совпадали:

    Это как то упростит работу скрипта?

    Не видя скрипта, сложно говорить о простоте. Скорее как удобнее будет...