Создание Random-a в 1С

1. Stanislav1993 12.12.18 08:04 Сейчас в теме
Всем привет. Мои друзья попросили меня реализовать такую идею для одной игры. Есть справочники "Герои" и "Игроки".
Посоветуйте как можно реализовать такую задачу? Всем спасибо!
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. namazi74 4 12.12.18 08:18 Сейчас в теме
не совсем понятно, что нужно. если реализовать генерацию случайных, то можно воспользоваться:

Генератор = Новый ГенераторСлучайныхЧисел();
Для Ном = 1 По 10 Цикл
    Сообщить(Генератор.СлучайноеЧисло(0, 100));
КонецЦикла;


выведет 10 случайных чисел от 0 до 100
3. Туки Туки 51 12.12.18 08:52 Сейчас в теме
Если нужен рэндом чисел, то ГенераторСлучайныхЧисел(), а для чего вы даете следующую информацию "Есть справочники "Герои" и "Игроки"" - предполагается создание чего-то более сложного случайным образом?
4. Stanislav1993 12.12.18 09:02 Сейчас в теме
(3)В справочнике есть список героев, которые должны присваиваться игрокам. Игроков всего - 5. А героев 100.
5. Туки Туки 51 12.12.18 09:06 Сейчас в теме
(4) Понятно, тогда код справочника - это код героя, т.е. число от одного до ста. С помощью генератора случайных чисел выдавай рандомное число от одного до ста, анпример вышло 80. И какое выпало, тот герой и присваивается.
Герой = Спарвочники.Герои.НайтиПоКоду(РандомноеЧисло)
6. SlavaKron 12.12.18 09:11 Сейчас в теме
(5) Проще через массив. Случайное число определяет элемент массива. Чтобы герои не повторялись, выбранный элемент достаточно удалить из массива.
7. Туки Туки 51 12.12.18 09:25 Сейчас в теме
(6) Точно, так будет лучше!
8. Stanislav1993 12.12.18 09:47 Сейчас в теме
(5)А что за рандомное число?
9. Denis_CFO 48 12.12.18 09:53 Сейчас в теме
(8)
Генератор = Новый ГенераторСлучайныхЧисел();
Для Ном = 1 По 10 Цикл
    РандомноеЧисло = Генератор.СлучайноеЧисло(0, 100);
КонецЦикла;


так понятнее?
10. Stanislav1993 12.12.18 10:13 Сейчас в теме
(9)

&НаСервере
Процедура ПолучитьГероеДоты()
	Генератор = Новый ГенераторСлучайныхЧисел();
	Для Ном = 1 По 5 Цикл
		РандомноеЧисло = Генератор.СлучайноеЧисло(1, 100);
		Выборка =  Справочники.Герои.НайтиПоКоду(РандомноеЧисло);
		Сообщить(Выборка.Наименование);
		Массив = Новый Массив(5);
		Массив[0] = Выборка.Наименование;
		Массив[1] = Выборка.Наименование;
		Массив[2] = Выборка.Наименование;
		Массив[3] = Выборка.Наименование;
		Массив[4] = Выборка.Наименование;
		Для Индекс = 1 По Массив.Количество() - 1 Цикл
			
			ГеройБахриев = Массив[Индекс];
			ГеройИгорь = Массив[Индекс];

		КонецЦикла;
	КонецЦикла;
КонецПроцедуры
Показать
11. SlavaKron 12.12.18 10:41 Сейчас в теме
(10)
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Герои");
МассивГероев = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0);

Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Игроки");
МассивИгроков = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0);

СоответствиеГероевИгрокам = Новый Соответствие;

ГСЧ = Новый ГенераторСлучайныхЧисел();
Для Каждого Игрок Из МассивИгроков Цикл
	Индекс = ГСЧ.СлучайноеЧисло(0, МассивГероев.ВГраница());
	СоответствиеГероевИгрокам.Вставить(Игрок, МассивГероев[Индекс]);
	МассивГероев.Удалить(Индекс);	
КонецЦикла;
Показать
Оставьте свое сообщение

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