Всё о RAND(RANDOM)

Всё о RAND(RANDOM)

Часто встречаю вопросы по Randomu. Предлагаю сюда выкладывать различные уроки связанные с RANDOMom.
Бой, случайная фраза, случайный предмет (с убитого монстра), и т.д, и т.п.

Nickit
useravatar
Offline
48 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Всё о RAND(RANDOM)


По бою:
Вид атаки:
Нанесение урона.
Парирование, уклонение, попадание.
Уклонился или нет.(+ урон при не уклоне)

Nickit
useravatar
Offline
48 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Всё о RAND(RANDOM)


Случайный предмет с монстра.
Если задано выпадения лута с моба в котором прописано несколько предметов, но возможно взять только один.
1. Выпад случайного.
2. Выпад с выбором предмета (Допустим по классу персонажа.)
3. Или в зависимости что ему предназначено носить (Латы, кольчугу, ткань, кожу..)

 Спойлер Show Spoiler Hide Spoiler
 


Выпад случайного:
Дан моб (Волк)
1. Предметы после убийства (Оружие:Меч, топор)
2. Предметы после убийства (Шмот:Наручи, перчатки, сапоги)

Выпад с выбором предмета:
Дан моб (Волк)
Предметы после убийства (Наручи, перчатки, сапоги)
По характеристике:
Латы: (Сила+выносливость)(+Парирование, уклонение)
Кожа: (Выносливость,крит) (+ловкость)
Латы,кольчуга: (Сила+Выносливость+Крит)
Латы,кольчуга,ткань: (Интелект+Выносливость+Крит)(+дух)

Nickit
useravatar
Offline
48 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Всё о RAND(RANDOM)


Случайные фразы:
В основном применяются в посещении одной и той же локации.
(Пример: В Таверне)
Или Случайного НПС (От которого уже получено задание или просто стоящего рядом "Для того чтоб он был")
Примерный урок уже существует. "Изменение фраз при неоднократном посещении локации"

Nickit
useravatar
Offline
48 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Всё о RAND(RANDOM)

Допишы что-бы с примером кода писали.

Oliver
Magni nominis umbra
useravatar
Offline
562 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Всё о RAND(RANDOM)

В процессе. немного подправил, но сделаю позже примеры кода и выложу QSP(с открытым кодом).

Nickit
useravatar
Offline
48 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Всё о RAND(RANDOM)

При работе с рандомом, заметил плавующую ошибку, которая может появится, а может и нет, но если код перезапускать раз 10-20, то стабильно выплывает, переменной b присваивается 0
Может кто подскажет, что я не правильно делаю или это глюк rand QSPа.

 Спойлер Show Spoiler Hide Spoiler
 а=0
:loop
if rand(0,100) < 30:set b = rand(10,15)
if rand(0,100) >= 30 and rand(0,100) < 70:set b = rand(16,19)
if rand(0,100) >= 70:set b = rand(19,21)
a+=1
'<<b>>'
if a < 10:jump'loop'

Tarq78
useravatar
Offline
5 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Всё о RAND(RANDOM)

Tarq78,
попробую тебе объяснить. Команды в QSP выполняются последовательно. Если не присвоить значение функции rand никакой переменной, то rand будет вычисляться каждый раз заново. В начале все числовые переменные равны нулю. В твоём примере переменная b так и останется равна нулю, если все четыре раза значение функции rand не удовлетворяет указанным условиям:

Код:


а=0
:loop
if rand(0,100) < 30:set b = rand(10,15)
! Первый раз вычисляется rand. rand(0,100)>=30, поэтому b остаётся равной нулю.
if rand(0,100) >= 30 and rand(0,100) < 70:set b = rand(16,19)
! Второй раз вычисляется rand. rand(0,100)<30, поэтому b остаётся равной нулю. И третий раз вычисляется rand. rand(0,100)>=70, поэтому b остаётся равной нулю.
if rand(0,100) >= 70:set b = rand(19,21)
! Четвёртый раз вычисляется rand. rand(0,100)<70, поэтому b остаётся равной нулю.
a+=1
b
! Можно не использовать подвыражения, а просто написать b. Имеем: b=0.
if a < 10:jump'loop'

Вероятность такого приблизительно равна 0,7*0,3*0,3*0,7=0,0441, т.е. 4,41%.

snail
useravatar
Offline
101 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Всё о RAND(RANDOM)

Видимо, я допустил ошибку… У тебя же не OR, а AND:

Код:

if rand(0,100) >= 30 AND rand(0,100) < 70:set b = rand(16,19)

А отрицание конъюнкции — это дизъюнкция отрицаний. Поэтому вероятность того, что b=0, будет не 4,41%, а 25%. Но общий принцип тот же.

offtop: стоило мне отойти от своего кредо "festina lente", как допустил ошибку…

snail
useravatar
Offline
101 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Всё о RAND(RANDOM)

snail написал(а):

Видимо, я допустил ошибку… У тебя же не OR, а AND:

Код:

if rand(0,100) >= 30 AND rand(0,100) < 70:set b = rand(16,19)

А отрицание конъюнкции — это дизъюнкция отрицаний. Поэтому вероятность того, что b=0, будет не 4,41%, а 25%. Но общий принцип тот же.

offtop: стоило мне отойти от своего кредо "festina lente", как допустил ошибку…

offtop: Оно? https://ru.wikipedia.org/wiki/Festina_lente

SneakBug8
Мастер ролевых
useravatar
Offline
332 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
974
Всего опросов:
14
Всего сообщений:
16790585
Сообщений на этой неделе:
7
Пользователи форума:
 
Всего пользователей:
2369
Последним зарегистрировался:
genger