Рандом

1. user1345957 05.04.20 14:46 Сейчас в теме
Необходимо чтобы после нажатия было каждый раз рандомный порядок. Например: были 4 картинки: декорация1 - самолёт, декорация2 - червь, декорация3 - луна, декорация4 - волк. После рандома порядок картинок поменялся.
Что-то мне подсказывает о массиве и о ГСЧ (генератор случайных чисел).
По теме из базы знаний
Найденные решения
28. dhurricane 06.04.20 20:03 Сейчас в теме
(24) Поправил немного алгоритм нажатия на "Выбранное фото" и для удобства переименовал декорации для вывода картинок.
Прикрепленные файлы:
1Cv8.dt
user1345957; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. burgomister 60 05.04.20 15:28 Сейчас в теме
В вопросе уже есть ответ.
3. user1345957 05.04.20 15:29 Сейчас в теме
(2) да, но я не совсем понял как это реализовать..Желательно чтобы каждой новой картинке автоматически присваивалось бы имя.
4. user1345957 05.04.20 15:42 Сейчас в теме
(2) а как массив картинок сделать ?
Я это только так себе представляю:

	Массив =  Новый Массив (10);
	Массив[0] = Элементы.Декорация2;
	Массив[1] = Элементы.Декорация3;
    Массив[2] = Элементы.Декорация4;
	Массив[3] = Элементы.Декорация5;
	Массив[4] = Элементы.Декорация6;
    Массив[5] = Элементы.Декорация7;
	Массив[6] = Элементы.Декорация8;
	Массив[7] = Элементы.Декорация9;
    Массив[8] = Элементы.Декорация10;
	Массив[9] = Элементы.Декорация11;
Показать
10. dhurricane 06.04.20 07:36 Сейчас в теме
(4) Вот одно из возможных решений:
// Исходный массив картинок
МассивКартинок =  Новый Массив (10);
МассивКартинок[0] = Элементы.Декорация2;
МассивКартинок[1] = Элементы.Декорация3;
МассивКартинок[2] = Элементы.Декорация4;
МассивКартинок[3] = Элементы.Декорация5;
МассивКартинок[4] = Элементы.Декорация6;
МассивКартинок[5] = Элементы.Декорация7;
МассивКартинок[6] = Элементы.Декорация8;
МассивКартинок[7] = Элементы.Декорация9;
МассивКартинок[8] = Элементы.Декорация10;
МассивКартинок[9] = Элементы.Декорация11;

// Перемешивание осуществляем с помощью списка значений,
// где Значение - картинка, а Представление - случайное число.

ГенераторЧисел = Новый ГенераторСлучайныхЧисел();

СписокКартинок = Новый СписокЗначений;
СписокКартинок.ЗагрузитьЗначения(МассивКартинок)

Для каждого ЭлементСписка Из СписокКартинок Цикл
	
	СлучайноеЧисло = ГенераторЧисел.СлучайноеЧисло(, 99999);
	ЭлементСписка.Представление = Формат(СлучайноеЧисло, "ЧЦ=5; ЧН=; ЧВН=; ЧГ=");
	
КонецЦикла; 

// Отсортировав случайные числа по порядку
// мы получим исходный массив картинок в случайном порядке.

СписокКартинок.СортироватьПоПредставлению();

МассивКартинок = СписокКартинок.ВыгрузитьЗначения();
Показать
user1345957; +1 Ответить
11. user1345957 06.04.20 13:33 Сейчас в теме
(10)
// Исходный массив картинок
МассивКартинок = Новый Массив (10);
МассивКартинок[0] = Элементы.Декорация2;
МассивКартинок[1] = Элементы.Декорация3;
МассивКартинок[2] = Элементы.Декорация4;
МассивКартинок[3] = Элементы.Декорация5;
МассивКартинок[4] = Элементы.Декорация6;
МассивКартинок[5] = Элементы.Декорация7;
МассивКартинок[6] = Элементы.Декорация8;
МассивКартинок[7] = Элементы.Декорация9;
МассивКартинок[8] = Элементы.Декорация10;
МассивКартинок[9] = Элементы.Декорация11;

// Перемешивание осуществляем с помощью списка значений,
// где Значение - картинка, а Представление - случайное число.

ГенераторЧисел = Новый ГенераторСлучайныхЧисел();

СписокКартинок = Новый СписокЗначений;
СписокКартинок.ЗагрузитьЗначения(МассивКартинок)

Для каждого ЭлементСписка Из СписокКартинок Цикл

СлучайноеЧисло = ГенераторЧисел.СлучайноеЧисло(, 99999);
ЭлементСписка.Представление = Формат(СлучайноеЧисло, "ЧЦ=5; ЧН=; ЧВН=; ЧГ=");

КонецЦикла;

// Отсортировав случайные числа по порядку
// мы получим исходный массив картинок в случайном порядке.

СписокКартинок.СортироватьПоПредставлению();

МассивКартинок = СписокКартинок.ВыгрузитьЗначения();
Показать


код не сработал:
Прикрепленные файлы:
13. dhurricane 06.04.20 14:00 Сейчас в теме
(11) Что демонстрируют эти скриншоты? Каким именно образом Вы проверили работу кода? Зачем Вы заменили число "99999" на "10"?
14. user1345957 06.04.20 14:05 Сейчас в теме
(13) я пытаюсь по точке останова узнать в чём ошибка, а 99999 на 10 изменил потому что картинок всего 10. К сожалению пока что картинки всё ещё стоят на месте.
15. dhurricane 06.04.20 15:23 Сейчас в теме
(14) Я все равно не понимаю, что именно не работает в приведенном мной алгоритме. В исходном массиве картинки расставлены по порядку. После выполнения алгоритма в этом же массиве разве они также находятся в исходном порядке?

а 99999 на 10 изменил потому что картинок всего 10.
Не нужно было. Используется произвольное случайное число, не привязанное к количеству объектов в массиве. Лучше верните, как было.
18. user1345957 06.04.20 15:30 Сейчас в теме
(15) да находятся в исходном порядке
19. dhurricane 06.04.20 15:39 Сейчас в теме
(18) Не верю. :) Если не трудно, подтвердите снимками отладчика.
20. user1345957 06.04.20 15:51 Сейчас в теме
(19) кидаю саму выгрузку информационной базы, смотрите и удивляйтесь.
Форма: Насколько долгий марафон.
21. dhurricane 06.04.20 16:08 Сейчас в теме
(20) Проверил. Элементы массива благополучно перемешались (см. рис.). Полагаю, Вы ожидали, что должно было что-то измениться на форме. Но эту часть я и не реализовывал, думал Вы сможете применить мой пример к своей конфигурации. В моем алгоритме меняется только массив.
Прикрепленные файлы:
user1345957; +1 Ответить
22. user1345957 06.04.20 16:10 Сейчас в теме
(21) и что же мне делать ? я уже запутался..Да, будет меняться на форме, я думал меня так и поняли..
23. dhurricane 06.04.20 16:13 Сейчас в теме
(20) Правильно ли я понял, что перемешать картинки нужно в обоих столбцах? Или в каждом столбце свой набор картинок, неподходящих для другого столбца?
user1345957; +1 Ответить
24. user1345957 06.04.20 16:14 Сейчас в теме
(23) можно мешать как угодно, так как я просто закидывал любые картинки.
28. dhurricane 06.04.20 20:03 Сейчас в теме
(24) Поправил немного алгоритм нажатия на "Выбранное фото" и для удобства переименовал декорации для вывода картинок.
Прикрепленные файлы:
1Cv8.dt
user1345957; +1 Ответить
29. user1345957 06.04.20 20:21 Сейчас в теме
(28) Как вы наверное заметили из похожей на эту тему, я примерно знал своё решение, но не мог всё правильно заставить работать.
26. user1345957 06.04.20 19:42 Сейчас в теме
27. user1345957 06.04.20 19:56 Сейчас в теме
(23) Как перемешивать картинки в столбцах ?
5. burgomister 60 05.04.20 17:54 Сейчас в теме
Массив = Новый Массив(3, 2);

    Массив[0][0] = "Знач11";
    Массив[0][1] = "Знач12";

    Массив[1][0] = "Знач21";
    Массив[1][1] = "Знач22";

    Массив[2][0] = "Знач31";
    Массив[2][1] = "Знач32";

    // обход всех элементов через конструкцию Для Каждого
    Для Каждого Строка Из Массив Цикл
        Для Каждого Элемент Из Строка Цикл
            Сообщить(Элемент);
        КонецЦикла;
    КонецЦикла;

    // обход всех элементов через индекс
    Для ИндексСтрока = 0 По Массив.Количество() - 1 Цикл
        Для ИндексСтолбец = 0 По Массив[ИндексСтрока].Количество() - 1 Цикл
            Сообщить(Массив[ИндексСтрока][ИндексСтолбец]);
        КонецЦикла;      
    КонецЦикла;
КонецПроцедуры
Показать
7. user1345957 05.04.20 18:57 Сейчас в теме
9. burgomister 60 06.04.20 04:39 Сейчас в теме
Где хранятся картинки? Это реквизит справочника хранилище или ссылка на файл? Если вас не устраивает (5), то больше информации, пжлста.
12. user1345957 06.04.20 13:38 Сейчас в теме
(9) пока что картинки установлены в декорациях, в дальнейшем планируется попытка загружать изображения например по их url-адресу.
6. burgomister 60 05.04.20 17:56 Сейчас в теме
ГСЧ = Новый ГенераторСлучайныхЧисел();
СлучайноеЧисло = ГСЧ.СлучайноеЧисло(0, 1000);  


Начальное число инициализируется временем работы операционной системы с момента старта.
8. user1345957 05.04.20 23:14 Сейчас в теме
16. burgomister 60 06.04.20 15:27 Сейчас в теме
Полагаю, эта тема тоже ваша. Так что эту закрываем. https://forum.infostart.ru/forum9/topic238888/
17. user1345957 06.04.20 15:30 Сейчас в теме
(16) да, лишнюю можете закрыть.
25. burgomister 60 06.04.20 18:50 Сейчас в теме
Я не могу закрыть то, что не открывал ;-)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот