Помощь по скриптам | Замудренный рандом
Тема закрыта by
TheWilf
Вечер в радость.
Есть ли мысли у кого, как сделать выпадение вещи рандомно так, чтобы редкие вещи выпадали реже? Вещички есть в таблице, редкость определяется в таблице `type` от 0 до 4. Ничего в голову не лезет.
P.S Сам код мне не нужен, а вот если бы кто подкинул идею механики, был бы благодарен.
Есть ли мысли у кого, как сделать выпадение вещи рандомно так, чтобы редкие вещи выпадали реже? Вещички есть в таблице, редкость определяется в таблице `type` от 0 до 4. Ничего в голову не лезет.
P.S Сам код мне не нужен, а вот если бы кто подкинул идею механики, был бы благодарен.
TheWilf (27.06.2019 в 20:56)
Вечер в радость.
Есть ли мысли у кого, как сделать выпадение вещи рандомно так, чтобы редкие вещи выпадали реже? Вещички есть в таблице, редкость определяется в таблице `type` от 0 до 4. Ничего в голову не лезет.
P.S Сам код мне не нужен, а вот если бы кто подкинул идею механики, был бы благодарен.
Вечер в радость.
Есть ли мысли у кого, как сделать выпадение вещи рандомно так, чтобы редкие вещи выпадали реже? Вещички есть в таблице, редкость определяется в таблице `type` от 0 до 4. Ничего в голову не лезет.
P.S Сам код мне не нужен, а вот если бы кто подкинул идею механики, был бы благодарен.
Значение не type int должно быть, а float и шанс в процентном соотношение
________
посл. ред. 27.06.2019 в 21:10; всего 2 раз(а); by System
Item drop_random_item() {
int r = rand(0, total_chance_sum);
int current_sum = 0;
for(int i = 0; i < items.count(); i++) {
if (current_sum <= r && r < current_sum + items[i].chance) return items[i];
current_sum += items[i].chance;
}
}
________
посл. ред. 27.06.2019 в 21:03; всего 1 раз(а); by System
<?php
function numberOfDecimals($value)
{
if ((int)$value == $value)
{
return 0;
}
else if (! is_numeric($value))
{
// throw new Exception('numberOfDecimals: ' . $value . ' is not a number!');
return false;
}
return strlen($value) - strrpos($value, '.') - 1;
}
function roulette($items)
{
$sumOfPercents = 0;
foreach($items as $itemsPercent)
{
$sumOfPercents += $itemsPercent;
}
$decimals = numberOfDecimals($sumOfPercents);
$multiplier = 1;
for ($i=0; $i < $decimals; $i++)
{
$multiplier *= 10;
}
$sumOfPercents *= $multiplier;
$rand = rand(1, $sumOfPercents);
//echo "max percent = {$sumOfPercents}\n";
//echo "rand = $rand\n";
$rangeStart = 1;
foreach($items as $itemKey => $itemsPercent)
{
$rangeFinish = $rangeStart + ($itemsPercent * $multiplier);
//echo "$itemKey in [$rangeStart, $rangeFinish]\n";
if($rand >= $rangeStart && $rand <= $rangeFinish)
{
return $itemKey;
}
$rangeStart = $rangeFinish + 1;
}
}
$items = array('item-1' => 0.25, 'item-2' => 0.5, 'item-3' => 5, 'item-4' => 4.25333);
echo roulette($items);
System, Спасибо больше, более чем достаточно!
TheWilf, редкая вешь бывает разной. Например карта сокровищ может выпасть с любого моба условно, а меганепробиваемая суперуберпупер броня только с легендарного босса). В первом случае шанс например одна карта с 1000 мобов, а во втором через раз, но босс респаунится раз в неделю. Тем не менее обе вещи редкие.
Mobiman (27.06.2019 в 21:18)
TheWilf, редкая вешь бывает разной. Например карта сокровищ может выпасть с любого моба условно, а меганепробиваемая суперуберпупер броня только с легендарного босса). В первом случае шанс например одна карта с 1000 мобов, а во втором через раз, но босс респаунится раз в неделю. Тем не менее обе вещи редкие.
TheWilf, редкая вешь бывает разной. Например карта сокровищ может выпасть с любого моба условно, а меганепробиваемая суперуберпупер броня только с легендарного босса). В первом случае шанс например одна карта с 1000 мобов, а во втором через раз, но босс респаунится раз в неделю. Тем не менее обе вещи редкие.
В первом посте написано, что эти вещи хранятся в базе и из них надо выбрать рандомно, точнее хитрорандомно. Читай внимательнее
`type` от 0 до 4. Сделай до 100 разброс, если рандом = 100 то редкая. 1 к 100 шанс. От 0 до 99 фуфел)
я выше написал что понятие редкости зависит не только от такого фактора как частота выпадения
________
посл. ред. 27.06.2019 в 21:33; всего 1 раз(а); by Mobiman
я выше написал что понятие редкости зависит не только от такого фактора как частота выпадения
________
посл. ред. 27.06.2019 в 21:33; всего 1 раз(а); by Mobiman