Вероятность в PHP

  • Автор темы .me
  • 11
  • Дата начала

.me

Пользователь
Регистрация
08.05.12
Сообщения
1
Реакции
0
Баллы
1
Всем привет,

Мне было интересно, может ли кто-нибудь помочь. Я нахожусь в процессе создания игры, в которой можно угонять машины. Я собрал сценарий, в котором, как вы можете видеть, есть диапазон от «машины 1» (самая красивая машина) до «машины 12», старой дрянной машины. Теперь я установил вероятность от 1100, и поэтому для двух лучших автомобилей установлена вероятность 99.... что, как я думал, поэтому затруднит их угон. Это верно? Поскольку сейчас кажется, что угнать любую машину довольно легко...
Вероятность в PHP
Код:
$random_car = rand (1,100);
if (($random_car)>99)
{$car = $car_1; $pic = $car1_pic;}
else
{
if (($random_car)>99)
{$car = $car_2; $pic = $car2_pic;}
else
{
if (($random_car)>90)
{$car = $car_3; $pic = $car3_pic;}
else
{
if (($random_car)>80)
{$car = $car_4; $pic = $car4_pic;}
else
{
if (($random_car)>70)
{$car = $car_5; $pic = $car5_pic;}
else
{
if (($random_car)>60)
{$car = $car_6; $pic = $car6_pic;}
else
{
if (($random_car)>50)
{$car = $car_7; $pic = $car7_pic;}
else
{
if (($random_car)>40)
{$car = $car_8; $pic = $car8_pic;}
else
{
if (($random_car)>35)
{$car = $car_9; $pic = $car9_pic;}
else
{
if (($random_car)>25)
{$car = $car_10; $pic = $car10_pic;}
else
{
if (($random_car)>20)
{$car = $car_11; $pic = $car11_pic;}
else
{
if (($random_car)>5)
{$car = $car_12; $pic = $car12_pic;}
else
{
PHP:
 

apishops

Пользователь
Регистрация
23.06.11
Сообщения
9
Реакции
2
Баллы
3
В чем вы хотите помочь? Исправляем этот код, или лучший способ угнать машину 1
Кроме того, в чем разница между первыми двумя утверждениями. Каждый раз будет выбрана только первая машина...
И вам не следует использовать так много операторов if else. В конце концов запутаешься...

Вы можете использовать массивы и выбирать автомобиль из массива на основе результата RAND. Образец:

$cars= array( 'empty0', 'pic1.jpg', 'pic2.jpg', 'pic3', 'pic4', 'pic5', 'pic6', 'pic7', 'pic8', 'pic9', ' рис10', 'рис11', 'рис12' );
$ранд = рандом(0, 120);
$selectedCar = ячейка($rand/10);
$pic = $cars[$selected_car];

Итак, если случайное число равно 116, вы получите 12-ю машину 116/10 = ceil(11.6) = 12.
если случайное число равно 112, вы все равно получите 12-ю машину 112/10 = ceil(11.2) = 12

если случайное число равно 96, вы получите 10-ю машину 96/10 = ячейка (9,6) = 10

если случайное число равно 6, вы получите car1 6/10 = ceil(0,6) = 1


Здесь вероятность одинакова для всех автомобилей. Вы можете затруднить выбор автомобиля следующим образом:

if( $selectedCar == 1 && rand(0,10)<5 ){ $selectedCar=2; }

 

lifesmeet

Пользователь
Регистрация
25.01.12
Сообщения
3
Реакции
0
Баллы
1
Я не знаю этого, но... почему вы создали if/else именно так? Не проще ли было бы просто сделать if/elseif/else?

В настоящее время у вас МНОГО вложенных if/else/if:

Код:
if (($random_car)>99) { $car = $car_1; $pic = $car1_pic;
} else { if (($random_car)>99) { $car = $car_2; $pic = $car2_pic; } else { if (($random_car)>90) { $car = $car_3; $pic = $car3_pic; } else { if (($random_car)>80) { $car = $car_4; $pic = $car4_pic; } else { if (($random_car)>70) { $car = $car_5; $pic = $car5_pic; } else { if (($random_car)>60) { $car = $car_6; $pic = $car6_pic; } else { if (($random_car)>50) { $car = $car_7; $pic = $car7_pic; } else { if (($random_car)>40) { $car = $car_8; $pic = $car8_pic; } else { if (($random_car)>35) { $car = $car_9; $pic = $car9_pic; } else { if (($random_car)>25) { $car = $car_10; $pic = $car10_pic; } else { if (($random_car)>20) { $car = $car_11; $pic = $car11_pic; } else { if (($random_car)>5) { $car = $car_12; $pic = $car12_pic; } else {
PHP: (правильное форматирование очень помогает...)
 
Сверху Снизу