Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 随机概率 我正在玩游戏,用户可以偷车。然而,当点击“偷车”时,我需要让更好的车更难偷(车1是最难的,车2是下一个难的…等等)_Php_Random_Probability - Fatal编程技术网

Php 随机概率 我正在玩游戏,用户可以偷车。然而,当点击“偷车”时,我需要让更好的车更难偷(车1是最难的,车2是下一个难的…等等)

Php 随机概率 我正在玩游戏,用户可以偷车。然而,当点击“偷车”时,我需要让更好的车更难偷(车1是最难的,车2是下一个难的…等等),php,random,probability,Php,Random,Probability,目前我的PHP脚本中有一组随机概率,尽管它似乎不起作用。感觉好像每辆车都很难偷。作为旁注,您将看到每辆车在被盗后都会生成自己的图片。有人能帮忙吗?谢谢 if($query1>="3"){ $random_car = rand (0,99); if (($random_car)>98) {$car = $car_1; $pic = $car1_pic;} else { if (($random_car)>97) {$car = $car_2; $pic = $car2_p

目前我的PHP脚本中有一组随机概率,尽管它似乎不起作用。感觉好像每辆车都很难偷。作为旁注,您将看到每辆车在被盗后都会生成自己的图片。有人能帮忙吗?谢谢

if($query1>="3"){


$random_car = rand (0,99);


if (($random_car)>98)
{$car = $car_1; $pic = $car1_pic;}
else
{
if (($random_car)>97)
{$car = $car_2; $pic = $car2_pic;}
else
{
if (($random_car)>94)
{$car = $car_3; $pic = $car3_pic;}
else
{
if (($random_car)>86)
{$car = $car_4; $pic = $car4_pic;}
else
{
if (($random_car)>77)
{$car = $car_5; $pic = $car5_pic;}
else
{
if (($random_car)>72)
{$car = $car_6; $pic = $car6_pic;}
else
{
if (($random_car)>65)
{$car = $car_7; $pic = $car7_pic;}
else
{
if (($random_car)>58)
{$car = $car_8; $pic = $car8_pic;}
else
{
if (($random_car)>48)
{$car = $car_9; $pic = $car9_pic;}
else
{
if (($random_car)>35)
{$car = $car_10; $pic = $car10_pic;}
else
{
if (($random_car)>19)
{$car = $car_11; $pic = $car11_pic;}
else
{
if (($random_car)>1)
{$car = $car_12; $pic = $car12_pic;}
else
{

$car = $car_13; $pic = $car13_pic;

}//car 12 else
}//car 11 else
}//car 10 else
}//car 9 else
}//car 8 else
}//car 7 else
}//car 6 else
}//car 5 else
}//car 4 else
}//car 3 else
}//car 2 else
}//car 1 else

你觉得随机化效果不太好的原因是你没有在选项之间创造足够大的余量

对于car 1,仅当$random_car为99或100时,它才会被选中。只有当$random_Car为97或98时,才会选择Car 2,仅此而已。如果是99或100,则将选择1号车,因此1号车和2号车被选择的概率相同。排名靠后的汽车被选中的几率更高,但利润率并没有那么高

第一辆车被选中的几率为百分之一,第十二辆车被选中的几率为百分之十八。这是我看到的最大利润

就您的代码而言,那些嵌套的if语句是一场噩梦。我将使用以下语法重写它们:

if() {
  // do something
}
elseif() {
  // do something else
}
else {
  // do if nothing else worked
}

你的if语句看起来有点生硬。我认为你可以更容易地编写它们,而不必构建这么大的if结构。这里是一个略短的版本,您可以用您的值定义一个数组

$carsSpecs = [
    '1' => [
        'min' => 97,
        'max' => 98,
        'car' => 123,
        'carpic' => 'test.jpeg'
    ],
];

$random_car = rand(0,99);
$car = '';
$pic = '';

foreach($carsSpecs as $car) {
    if($random_car > $car['min'] && $random_car < $car['max']) {
        $car = $car['car'];
        $pic = $car['carpic'];
    }
}
$carsSpecs=[
'1' => [
'min'=>97,
“最大值”=>98,
“汽车”=>123,
“carpic”=>“test.jpeg”
],
];
$random_car=rand(0,99);
$car='';
$pic='';
foreach($carsSpecs作为$car){
如果($random\u car>$car['min']和&$random\u car<$car['max']){
$car=$car['car'];
$pic=$car['carpic'];
}
}
现在,您可以定义阵列中的每辆车,并更轻松地使用它们。也许您有一个现有的数组,可以直接使用它们

还有一些其他的样式可以使用数组,但是它要复杂得多


最后一件事是,你应该使数字之间的范围更大

我建议将所有这些逻辑都实现为数据

例如:

生成随机车辆

<?php

  $cars = [
    ["Buick", "buick.jpg" ],
    ["Mazda", "mazda.jpg" ],
    ["Honda", "honda.jpg" ],
    ["Acura", "acura.jpg" ],
    ["Dodge", "dodge.jpg" ],
    ["Tesla", "tesla.jpg" ],
    ["Volvo", "volvo.jpg" ],
    ["Ford",  "ford.jpg"  ],
    ["Kia",   "kia.jpg"   ],
    ["Audi",  "audi.jpg"  ],
    ["BMW",   "bmw.jpg"   ],
    ["Camry", "camry.jpg" ],
    ["Lexus", "camry.jpg" ],  # Lexus is just a Camry with a leather interior
  ];

  $frequency_table = [ 1, 19, 35, 48, 58, 65, 72, 77, 86, 94, 97, 99, 101 ];

  $r = rand(0,99);

  for ($ix = 0; $frequency_table[$ix] < $r; ++$ix );

  list($name, $img) = $cars[$ix];

  echo "You stole a $name <img src=/images/$img>\n";
?>

输出

You stole a Dodge <img src=/images/dodge.jpg>

...

You stole a Ford <img src=/images/ford.jpg>
你偷了道奇
...
你偷了一辆福特

否则如果(某物){…}
开关()
似乎每辆车都有1/100的机会被选中。随机化的数字不会增加难度,只是为了更高或更低的数字。