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

  • Автор темы .me
  • 20
  • Обновлено
  • 15, May 2024
  • #1
Всем привет, Мне было интересно, может ли кто-нибудь помочь.

Я нахожусь в процессе создания игры, в которой можно угонять машины.

Я собрал сценарий, в котором, как вы можете видеть, есть диапазон от «машины 1» (самая красивая машина) до «машины 12», старой дрянной машины.

Теперь я установил вероятность от 1100, и поэтому для двух лучших автомобилей установлена вероятность 99.... что, как я думал, поэтому затруднит их угон.

Это верно? Поскольку сейчас кажется, что угнать любую машину довольно легко...

 $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:

.me


Рег
08 May, 2012

Тем
1

Постов
1

Баллов
11
  • 21, May 2024
  • #2
В чем вы хотите помочь? Исправляем этот код, или лучший способ угнать машину 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; } // по сути, вторая проверка рандомом
 

apishops


Рег
23 Jun, 2011

Тем
3

Постов
9

Баллов
39
  • 08, Jun 2024
  • #3
Я не знаю этого, но... почему вы создали 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: (правильное форматирование очень помогает...)
 

lifesmeet


Рег
25 Jan, 2012

Тем
0

Постов
3

Баллов
3
Тем
49554
Комментарии
57426
Опыт
552966

Интересно