Как сделать random в проекте

  • Автор темы Автор темы andryvat
  • Дата начала Дата начала

andryvat

Пользователь
Регистрация
21.01.2016
Сообщения
38
Реакции
0
Баллы
6
Как сделать random в проекте, чтоб при каждом новом старте проекта менялась одна его часть. Будет несколько таких частей (групп экшенов), которые следут подменять. Но не по порядку а рэндом.
 
Используйте Данные -> Random, далее через логический блок Switch, в зависимости от данных, ведите туда, куда нужно.
 
Последнее редактирование:
Каждую группу экшенов оформи в отдельный проект, собери их все в одном общем проекте с организацией рандомного выбора между ними, а потом этот проект уже используй в том месте, где тебе нужен рандомный кусок в твоём основном проекте.
 
делаешь свич на все эти группы в зависимости от числа. А число рандомишь

Используйте Данные -> Random, далее через логический блок Switch, в зависимости от данных, ведите туда, куда нужно.

Можно без Switch организовать:

Например, нам нужно зарандомить выбор между 10 отдельными группами экшенов, ставим их просто друг за другом, и в начале каждого ставим один и тот же блок рандомного выбора через спинтакс, в который помещаем 9 элементов, которые не используются в наборах экшенов, и в одном месте элемент, который используется. Зачем это нужно? Так мы получим вероятность 1 к 10, что выпадет именно текущий элемент. Если спинтакс выберет используемый в экшене элемент (например номер совпадения), то через переменную он подставится в нужное место, и текущая цепочка отработает, и основной шаблон пойдёт дальше. Если спинтакс выберет один из 9 неиспользуемых элементов, то через переменную подставится значение, которое приведёт к ошибке и к переходу к следующему набору экшенов. Если из 10 не разу не выпадет положительный вариант, то переход к началу и всё по новой (т.е. ошибка последнего модуля ведёт к началу).

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

P.S. Думаю, разместить в начале каждого набора экшенов один и тот же элемент не сложнее, чем организовать гребёнку свича, так что как вариант (который можно доработать) вполне можно рассмотреть.
 
Спасибо, буду пробовать..
 
Можно без Switch организовать:

Например, нам нужно зарандомить выбор между 10 отдельными группами экшенов, ставим их просто друг за другом, и в начале каждого ставим один и тот же блок рандомного выбора через спинтакс, в который помещаем 9 элементов, которые не используются в наборах экшенов, и в одном месте элемент, который используется. Зачем это нужно? Так мы получим вероятность 1 к 10, что выпадет именно текущий элемент. Если спинтакс выберет используемый в экшене элемент (например номер совпадения), то через переменную он подставится в нужное место, и текущая цепочка отработает, и основной шаблон пойдёт дальше. Если спинтакс выберет один из 9 неиспользуемых элементов, то через переменную подставится значение, которое приведёт к ошибке и к переходу к следующему набору экшенов. Если из 10 не разу не выпадет положительный вариант, то переход к началу и всё по новой (т.е. ошибка последнего модуля ведёт к началу).

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

P.S. Думаю, разместить в начале каждого набора экшенов один и тот же элемент не сложнее, чем организовать гребёнку свича, так что как вариант (который можно доработать) вполне можно рассмотреть.

Я лично запутался и ничего не понял) Думаю новичку все же легче сделать 2 элементарных действия - рандомное число и свич в зависимости от результата
 
Можно без Switch организовать
Если нужна проверка "используется ли уже текущий рандом", то можно сделать проверку IF после блока рандома.
Спинтакс предназначен для другого. Использовать его в данной задаче - это все равно, что забивать гвозди сапогом.
 
Последнее редактирование:
Если нужна проверка "используется ли уже текущий рандом", то можно сделать проверку IF после блока рандома.
Спинтакс предназначен для другого, это все равно, что забивать гвозди сапогом.

Неправда, в проектах Зенно широко используется выход с действия по ошибке в качестве логического значения. Я просто подстроился под эту концепцию, используя существующие возможности.

Можно и с IF организовать, но так будет на одно действие больше. У меня проще вариант :-)

Спинтакс как раз для этого и предназначен. Я его использую, чтобы получить рандомное текстовое значение, а он для этого и нужен. Можно было бы пристроиться с рандомным выбором числа, но тогда кол-во возможных вариантов резко сократилось бы, а чем больше это число, тем проще нам подобрать что-то подходящее для подстановки в существующих экшенах.

Или вот ответь на вопрос:

Как сделать рандомный выбор числа из диапазона, при условии, что шаг между ними будет не 1? А если он вообще не фиксированный?
 
Последнее редактирование:
Сделал рандом чисел от 1 до 3. Свитч и три перехода. Почему то выпадает только 1 и 2.
И возникла мысль, как сделать чтоб в итоге все цифры выпали примерно одинаковое количество раз?
 
Сделал рандом чисел от 1 до 3. Свитч и три перехода. Почему то выпадает только 1 и 2.
И возникла мысль, как сделать чтоб в итоге все цифры выпали примерно одинаковое количество раз?

В Зенно отсчёт от 0. От 0 до 3-х как раз выпадает 3 значения: 0, 1 и 2. Если начинаешь отсчёт от 1, то плюсуй к верхнему значению.
 
Добавил 4. Теперь от 1 до 3 выпадает, 4 нет.. ))
 
.
 
Последнее редактирование:
поставил от 0 до 3. все равно 3 не выпадает.. тоесть от 0 до 3 не включает 3 в выбор, а только 0 1 2 так?

Как я понимаю, верхняя 3 означает число вариантов при отсчёте от 0. Т.е. она не включается в диапазон выбора. Это такая особенность у языков программирования, за исключением некоторых:

https://ru.wikipedia.org/wiki/Ошибка_на_единицу

Ошибки, связанные с массивами, могут также являться результатом различия в языках программирования. Отсчёт с нуля традиционен, но некоторые языки ведут отчет с 1. В языке Паскаль можно определять индексы[1]. Это позволяет настроить модель массива на предметную область.

И Зенно, видимо, придерживается традиций.
 
Можно без Switch организовать:

Например, нам нужно зарандомить выбор между 10 отдельными группами экшенов, ставим их просто друг за другом, и в начале каждого ставим один и тот же блок рандомного выбора через спинтакс, в который помещаем 9 элементов, которые не используются в наборах экшенов, и в одном месте элемент, который используется. Зачем это нужно? Так мы получим вероятность 1 к 10, что выпадет именно текущий элемент. Если спинтакс выберет используемый в экшене элемент (например номер совпадения), то через переменную он подставится в нужное место, и текущая цепочка отработает, и основной шаблон пойдёт дальше. Если спинтакс выберет один из 9 неиспользуемых элементов, то через переменную подставится значение, которое приведёт к ошибке и к переходу к следующему набору экшенов. Если из 10 не разу не выпадет положительный вариант, то переход к началу и всё по новой (т.е. ошибка последнего модуля ведёт к началу).

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

P.S. Думаю, разместить в начале каждого набора экшенов один и тот же элемент не сложнее, чем организовать гребёнку свича, так что как вариант (который можно доработать) вполне можно рассмотреть.
я правильно понимаю, ты предлагаешь блок рандома и блок свича заменить на 10 блоков спинтакс?)
 
я правильно понимаю, ты предлагаешь блок рандома и блок свича заменить на 10 блоков спинтакс?)

Я предлагаю этот вариант взять на заметку, возможно такой подход где-то будет оправдан, не обязательно здесь.

Плюс ты пишешь так, как-будто это более трудоёмко, но подумай, ведь все блоки абсолютно одинаковые и скопировать их не составляет труда.
 
Я предлагаю этот вариант взять на заметку, возможно такой подход где-то будет оправдан, не обязательно здесь.

Плюс ты пишешь так, как-будто это более трудоёмко, но подумай, ведь все блоки абсолютно одинаковые и скопировать их не составляет труда.
копировать не труоемко. но зачем множить
 
копировать не труоемко. но зачем множить

В гребёнке тоже размножение идёт, так что это не очень критичный довод. Или ты имел в виду организацию цикла с подстановкой разных наборов экшенов к одному спинтаксу?
 
Как сделать random в проекте, чтоб при каждом новом старте проекта менялась одна его часть. Будет несколько таких частей (групп экшенов), которые следут подменять. Но не по порядку а рэндом.

Используйте Данные -> Random, далее через логический блок Switch, в зависимости от данных, ведите туда, куда нужно.

делаешь свич на все эти группы в зависимости от числа. А число рандомишь

Я придумал, как без Свича и проще сделать:

8bb806c57f190a9d1981a0c853f726d3.png

  1. Те части проекта, которые нужно рандомизировать оформляем как отдельные проекты и складываем в одну папку.
  2. Получаем список файлов в этой папке
  3. Берём случайную строку из этого списка
  4. Используем эту строку при подключении проекта в проекте
  5. Всё
Так нормально?
 
Пользуюсь свитчем. Пока устаривает. Спасибо.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)