簡體   English   中英

如何使用php在每個隨機操作數之后生成隨機運算符?

[英]How to generate random operator after each random operand using php?

這是我的隨機操作數生成器代碼:

$randomOperands = array();

// do a loop over $i n times
for ($i = 0; $i <= 10; $i ++) {
    // assign random operand to array slot
    $randomOperands[] = rand(0, 9);
}
// print array values:
foreach($randomOperands as $key=>$value1){
    echo  $value1 "<br />"; 
}

但是如何在每個隨機操作數之后生成隨機運算符?

這是我的表單,用戶將通過該表單提供他的輸入和 n 個具有隨機序列的問題,其中包含 n(用戶想要的操作數,他可以在 1 到 10 的范圍內為此提供輸入)操作數和 n-1單擊生成按鈕后,將生成序列的運算符和答案。

   <form action="" method="POST">
   Select no.of questions:<input type="number" name="que" value="que">
   <br>
   <br>
   Select no. of series: <select name="select">
    <option value="0"> 2 </option>
    <option value="1"> 3 </option>
    <option value="2"> 4 </option>
    <option value="3"> 5 </option>
    <option value="4"> 6 </option>
    <option value="5"> 7 </option>
    <option value="6"> 8 </option>
    <option value="7"> 9 </option>
    <option value="8"> 10 </option>
   </select>

     <br><br>
     Select number type(in digits) :
     <select name="select_box">
    <option value="0">1</option>
    <option value="1"> 2 </option>
    <option value="2"> 3 </option>
    <br><br>
  </select>
  <br /><br />
   Select operations:<br />
   <input type="checkbox" id="add" name="operation" value="addition"  
   onclick="doOperation()"><label>Addition</label>
   <input type="checkbox" id="sub" name="operation" value="subtract"  
    onclick="doOperation()"><label>Subtraction</label>
   <input type="checkbox" id="mult" name="operation" value="multiply"  
   onclick="doOperation()"><label>Multiplication</label>
   <input type="checkbox" id="div" name="operation" value="divide"  
    onclick="doOperation()"><label>Division</label>
    <br><br>

     <br><br>
     <input type="submit" name="submit" value="Generate"><br>
    <br>
   </form>

這里的第一個字段是問題數量,即用戶想要獲得隨機序列的問題數量。 第二個字段是沒有。 系列,即用戶在該序列中想要多少個操作數(如果他輸入 6 或 1 到 10 之間的任何數字,則在填充所有字段后,將在最后生成 6 個操作數和 5 個運算符及其答案的序列)。 第三個字段是沒有。 位數,即用戶 wnat 生成序列的位數,我只給出了最多 3 位數的選擇。 最后,用戶希望為序列執行哪些操作

我知道它非常棘手的任務,但也很有趣。 我該怎么做?

下面是我如何生成一串整數和操作數。

請注意如何需要額外的檢查來避免被零除。

另外,如上所述,您是否真的想在代碼中評估結果?

 <?php

$potentialOperands = array('+', '-', '*', '/');  //Keep division as the last operand here
$previousInt = null;        //Track the previous operand, else we'll get division by zero

$randomIntegers = array();
$randomOperands = array();

 // do a loop over $i n times
 for ($i = 0; $i <= 10; $i ++) {
    // assign random operand to array slot
    $nextInt = rand(0, 9);
    $randomIntegers[] = $nextInt;
    if($i < 10){    //No operand after last integer
        if($previousInt === 0){
            //Make sure to avoid a potenial division-by-zero
            $randomOperands[] = $potentialOperands[rand(0, 2)];
        }
        else{
            $randomOperands[] = $potentialOperands[rand(0, 3)];
        }
    }
    $previousInt = $nextInt;
 }

 // print array values:
   $exp = '';
   foreach($randomIntegers as $key=>$value1)
   {
       $exp .=  $value1 . " "; 
       if(isset($randomOperands[$key])){
           $exp .=  $randomOperands[$key] ." "; 
       }
   }

   $res = eval("return ($exp);");

   //Generates answer rounded to 3 decimal places
   //The answer uses standard PHP operator precedence
   printf("%s = %.3f", $exp, $res);
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM