@spam said in Отобразить дату и время:
Пример на коленке:
@spam, спс, мало-мальски понятное для себя увидел. Курю.....
@verhov вот так будет не проще? Цифры будет меняться, пока все 3 не станут разными.

[[N1]]==[[N2]]||[[N1]]==[[N3]]||[[N2]]==[[N3]]
VAR_N1 = Math.floor(Math.random() * (parseInt(9) - parseInt(1) + 1)) + parseInt(1)
VAR_N2 = Math.floor(Math.random() * (parseInt(9) - parseInt(1) + 1)) + parseInt(1)
VAR_N3 = Math.floor(Math.random() * (parseInt(9) - parseInt(1) + 1)) + parseInt(1)
@verhov said in 3 случайные числа и чтоб не совпадали:
И в догонку, после надо тыркнуть в трех разных местах, (согласно случайным числам), как проще красивей сделать? городить кучу IF не очень хочется.
Идеально было бы сделать 9 функций типа ТЫРК1..9 и вызов потом ТЫРК[[RNx]]
Так пройдет?
Да, можете в цикле сделать. Первый цикл будет идти и нажмет N1, второй N2 и т.д.
@uraabk said in 3 случайные числа и чтоб не совпадали:
Да, можете в цикле сделать. Первый цикл будет идти и нажмет N1, второй N2 и т.д.
что то не дает менять имя функции с добавлением переменной. решил копипастой и 27 ифов нарисовать, зато работает :))))
Хм, задача усложняется, надо случайных чисел 9 штук и потом тыркать от 1 до 8/9, если облом, то прекращать поток, если нет то еще тыркать и так пока не будет профит или кончатся попытки.
Наверно вышеуказанным методом будет проще сделать. все в одно условие можно заткнуть
@verhov said in 3 случайные числа и чтоб не совпадали:
Хм, задача усложняется, надо случайных чисел 9 штук и потом тыркать от 1 до 8/9, если облом, то прекращать поток, если нет то еще тыркать и так пока не будет профит или кончатся попытки.
Наверно вышеуказанным методом будет проще сделать. все в одно условие можно заткнуть
Может вы объясните саму ситуацию? Наверняка есть проще способ решить задачу.
Вообще, эту задачу наверняка как-то можно решить красивым программистским методом. Но в басе есть настолько удобный инструмент для этого, что не хочется использовать что-то другое.
Вы можете создать ресурс, в котором будет нужный набор чисел и просто вызвать в переменные этот ресурс нужное число раз. Числа всегда будут разные.
А для создания рандомности в настройках ресурса не забудьте добавить галочку Мешать строки. Чтобы "обнулить" результат текущей итерации выбора чисел и повторить ее, используйте экшн Перегрузить ресурс.
Вот и всё.
@fox said in 3 случайные числа и чтоб не совпадали:
Может вы объясните саму ситуацию? Наверняка есть проще способ решить задачу.
автоматизация игры в ленте :) там каждые сутки можно зайти и потыркать 9 кнопок, игра на канвасе, приходится по координатам тыркать. может на первом тырке получится облом, а может на 5, но на 8 точно чтото попадется.
Для игры нужны номера, при массовости можно что то хорошее за 1 рубль получить
@xclsv said in 3 случайные числа и чтоб не совпадали:
Вы можете создать ресурс, в котором будет нужный набор чисел и просто вызвать в переменные этот ресурс нужное число раз. Числа всегда будут разные.
А для создания рандомности в настройках ресурса не забудьте добавить галочку Мешать строки. Чтобы "обнулить" результат текущей итерации выбора чисел и повторить ее, используйте экшн Перегрузить ресурс.
вечером попробую, точно текстовик с колонкой 1-9
@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.
@verhov said in 3 случайные числа и чтоб не совпадали:
а зачем мне глобальный список? мне то случайные выпадения нужны в рамках одного потока.
Прошу прощения. Неправильно понял Вас в этом сообщении:
@verhov said in 3 случайные числа и чтоб не совпадали:
так поток закончится и завершится, соответственно при вызове потока для другого номера список будет заполнятся заново, так? Заполнение списка в самом начале сделать. Список(0,,,,8) значениями 1,,,9
Да. В рамках одного потока можно использовать обычный список. Всё должно работать.
@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 точно чтото попадется.
Так может сделать фотку кнопок и безошибочно тыкать сразу по кнопкам, место координат?