【问题标题】:Php random odd or even [closed]PHP随机奇数或偶数[关闭]
【发布时间】:2020-11-20 08:36:17
【问题描述】:

我希望他从我输入的字符串中随机选择 5 个数字并检查它们是偶数还是奇数 这是我制作的代码,但我不希望包含 0:


    <?php
$s = array();
$tek =array();
$cift =array();
$tamsayi = array(1,2,3,4,5,6,7,8,9,10);

for( $i=0; $i<5; $i++){

    $s [$i]= array_rand($tamsayi);
}
echo "Oluşturulan rastgele dizi : ";
  foreach ($s as $el) {
    echo $el;
  }
  for($j = 0; $j<5;$j++){
      if($s[$j] % 2 == 0){
        $cift[$j]=$s[$j];
      }else{
          $tek[$j]= $s[$j];
      }
  }
  echo '<br>';
  echo "Çift sayılar : ";
  echo '<br>';
  foreach ($cift as $eli) {
    echo $eli;
    echo '<br>';
  }
  echo "Tek sayılar : ";
  echo '<br>';
  foreach ($tek as $elin) {
    echo $elin;
    echo '<br>';
  }
?>

【问题讨论】:

  • 或者有什么捷径可以做到这一点
  • 字符串在哪里?你的意思是数组$tamsayi
  • 是的@RoAchterberg
  • array_rand 不会从数组中随机选择 value,它会随机选择 key。此处数组的键从 0 到 9。您应该使用该键再次访问相应的数组值:$s[$i]= $tamsayi[array_rand($tamsayi)];
  • 非常感谢,感谢您的帮助,@CBroe

标签: php arrays random


【解决方案1】:

试试这个:

<?php
$array = [1,2,3,4,5,6,7,8,9,10];
$finalArray = [];

for($i = 0; $i < 5; $i++) {
    $key = array_rand($array);
    $random = $array[$key];
   if($random % 2 == 0){
       $finalArray["even"][] = $random;
   } else {
       $finalArray["odd"][] = $random;
   }
}   
print("<pre>".print_r($finalArray,true)."</pre>");

?>

输出看起来像这样:

Array
(
    [even] => Array
        (
            [0] => 4
            [1] => 4
            [2] => 8
        )

    [odd] => Array
        (
            [0] => 9
            [1] => 3
        )

)

如果你想让数字只出现一次:

<?php

$array = [1,2,3,4,5,6,7,8,9,10];
$finalArray = [];

for($i = 0; $i < 5; $i++) {
    $key = array_rand($array);
    $random = $array[$key];
    unset($array[$key]);
   if($random % 2 == 0){
       $finalArray["even"][] = $random;
   } else {
       $finalArray["odd"][] = $random;
   }

}   
print("<pre>".print_r($finalArray,true)."</pre>");

?>

这将打印始终唯一的值,例如: 数组

(
    [odd] => Array
        (
            [0] => 3
            [1] => 5
            [2] => 7
        )

    [even] => Array
        (
            [0] => 4
            [1] => 10
        )

)

【讨论】:

    【解决方案2】:

    试试这个以获得灵感。这会输出一个包含 5 个值的数组,表示它们的奇偶性。 输出:

    array(5) {
      [0]=>
      array(2) {
        ["parity"]=>
        string(3) "odd"
        ["value"]=>
        int(5)
      }
      [1]=>
      array(2) {
        ["parity"]=>
        string(3) "odd"
        ["value"]=>
        int(7)
      }
      [2]=>
      array(2) {
        ["parity"]=>
        string(3) "odd"
        ["value"]=>
        int(3)
      }
      [3]=>
      array(2) {
        ["parity"]=>
        string(4) "even"
        ["value"]=>
        int(6)
      }
      [4]=>
      array(2) {
        ["parity"]=>
        string(4) "even"
        ["value"]=>
        int(4)
      }
    

    代码:

    <?php
    
    $a = array(1,2,3,4,5,6,7,8,9,10);
    $numItems = count($a);
    
    $selectedValues = [];
    for ($i = 0, $l = 5; $i < $l; $i++)
    {
        $selectedValue = $a[mt_rand(0, $numItems - 1)];
        $selectedValues[] =
            [
                'parity' => !($selectedValue % 2)?'even':'odd',
                'value' => $selectedValue
            ];
    }
    
    var_dump($selectedValues);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      相关资源
      最近更新 更多