[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: разные вероятности выпадения random
Apelcun77
$rand = rand(1, 100);
if($rand = "1" and $rand = "40");
{
echo "AK - 47 | Vulcan";
}
if($rand >= "41" and $rand <= "80");
{
echo "M4A4 | Wolf";
}
if($rand >= "81" and $rand <= "100");
{
echo "AWP | Asiimov";
}

Мне нужно чтобы был разный шанс выведения информации. У надписи "AK - 47 | Vulcan" = 40% вероятности вывода, у "M4A4 | Wolf" = 40%, у "AWP | Asiimov"=20% Я сделал такой код, но он не работает. Может есть более простые решения моей задачи. Что я сделал не так? и есть ли варианты проще?
AllesKlar
$rand = "1" // Это присваивание.
$rand == "1" // Это сравнение

$rand == "1" and $rand == "40" // взаимоисключающее условие. Не может одно скалярное значение одновременно быть равно 1 и 40

$rand = rand(1, 100); // $rand типа Integer
$rand == "1" // сравниваешь же ты его со строкой
1 и "1" - это разные значения

_____________
[продано копирайтерам]
Apelcun77
$rand = rand(1, 100);
if($rand >= "1" and $rand <= "40");
{
echo "AK - 47 | Vulcan";
}
if($rand >= "41" and $rand <= "80");
{
echo "M4A4 | Wolf";
}
if($rand >= "81" and $rand <= "100");
{
echo "AWP | Asiimov";
}

Вот так?
AllesKlar
почти.
осталось вот тут:
Цитата
$rand = rand(1, 100); // $rand типа Integer
$rand == "1" // сравниваешь же ты его со строкой
1 и "1" - это разные значения



_____________
[продано копирайтерам]
paul85
Цитата (AllesKlar @ 25.01.2015 - 22:04)
$rand == "1" // сравниваешь же ты его со строкой

AllesKlar, разве PHP не приводит к одному типу сравниваемые друг с другом элементы?
Kusss
Цитата
и есть ли варианты проще?

угу
$array = array (
"AK - 47 | Vulcan",
"AK - 47 | Vulcan",
"M4A4 | Wolf",
"M4A4 | Wolf",
"AWP | Asiimov",
);

$rand = array_rand($array, 1);
AllesKlar
Цитата (paul85 @ 26.01.2015 - 00:11)
Цитата (AllesKlar @ 25.01.2015 - 22:04)
$rand == "1" // сравниваешь же ты его со строкой

AllesKlar, разве PHP не приводит к одному типу сравниваемые друг с другом элементы?

Да, в общем-то все языки приводят.

Но вот сейчас попробовал
var_dump('1' == 1); // true
это ж что за нифигасебетакое?
Должно же было быть сравнение 49 == 1 по ASCII коду '1'
Ну шо за язык... для девушек писали, чтоли, где логика? Логика где, спрашиваю??? :wacko:

_____________
[продано копирайтерам]
Kusss
сам же ответ знаешь , что для таких сравнений есть ===.
paul85
Цитата (AllesKlar @ 26.01.2015 - 01:07)
Должно же было быть сравнение 49 == 1 по ASCII коду '1'

Ну так было бы в С/С++. Наверное так же в Java.

А PHP приведет к одному типу. Только вот число к строке или строку к числу в данном случае - не знаю. Наверное приводится к типу первого элемента.

Цитата (AllesKlar @ 26.01.2015 - 01:07)
Ну шо за язык... для девушек писали, чтоли, где логика? Логика где, спрашиваю???

=)) Я думаю, что все языки с динамической типизацией так поступают.
123456
function auto()
{
$r = rand(1, 10);

if ($r >= 1 && $r <= 4)
return "AK - 47 | Vulcan";
elseif ($r >= 5 && $r <= 8)
return "M4A4 | Wolf";
elseif ($r >= 9 && $r <= 10)
return "AWP | Asiimov";
}

echo auto();
vital
Цитата (123456 @ 26.01.2015 - 15:21)
function auto()
{
$r = rand(1, 10);

if ($r >= 1 && $r <= 4)
return "AK - 47 | Vulcan";
elseif ($r >= 5 && $r <= 8)
return "M4A4 | Wolf";
elseif ($r >= 9 && $r <= 10)
return "AWP | Asiimov";
}

echo auto();

Что не помешает тому, что бы 9ка выпала 2 раза подряд например smile.gif
Это костыль, и с точки зрения тервера не верный, но тсу вполне может сойти.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.