Php 不重复地输出40个随机和

Php 不重复地输出40个随机和,php,Php,我正在为我的孩子们创建一个基于他们学校考试的在线考试 我想在1-10倍表的基础上输出40个随机乘法和(7和9倍表除外)。但我不想输出以前输出过的任何内容 例如: 7x4= 2x5= 12 X 10= 4 X 5= 。。。最多40个问题 最优雅的方式是什么?我有点不知所措 我可以得到1-10之间的随机数 $numbers = range(1, 10); shuffle($numbers); 但这仍然包括7和9。那么,如何生成40个总和,同时确保没有重复项 谢谢 $question=array()

我正在为我的孩子们创建一个基于他们学校考试的在线考试

我想在1-10倍表的基础上输出40个随机乘法和(7和9倍表除外)。但我不想输出以前输出过的任何内容

例如:

7x4=

2x5=

12 X 10=

4 X 5=

。。。最多40个问题

最优雅的方式是什么?我有点不知所措

我可以得到1-10之间的随机数

$numbers = range(1, 10);
shuffle($numbers);
但这仍然包括7和9。那么,如何生成40个总和,同时确保没有重复项

谢谢

$question=array();
$question = array();
$numbers = range(1,10);
$numbers = array_diff($numbers, [7, 9]); // Removing 7 & 9 from array as per requirement
$frontNumbers = range(1,20);
$frontNumbers =  array_merge($frontNumbers, range(1,20));
$frontNumbers =  array_merge($frontNumbers, range(1,10)); // Just to make sure we get required no of questions
shuffle($frontNumbers);
foreach($frontNumbers as $value){
    shuffle($numbers);
   $question[] = $value.','.$numbers[0];
}
$question = array_unique($question);
$question = array_slice($question,0,40);
$count = 0;
foreach($question as $row){
   $count++; 
   echo $count.') '.str_replace(',', ' x ', $row).' = <br>';
}
$numbers=范围(1,10); $numbers=array_diff($numbers,[7,9]);//根据要求从阵列中移除7和9 $frontNumbers=范围(1,20); $frontNumbers=array_merge($frontNumbers,范围(1,20)); $frontNumbers=array_merge($frontNumbers,范围(1,10));//只是为了确保我们不需要任何问题 洗牌($frontnumber); foreach($frontnumber作为$value){ 洗牌(数字); $QUOTE[]=$value.','.$numbers[0]; } $question=array\u unique($question); $question=数组\ U切片($question,0,40); $count=0; foreach($问题作为$行){ $count++; echo$count.')。str_replace(',','x',$row)。'=
; }
为了防止重复,您需要某种形式的内存。或者直接将每个新提议的对与已经使用的对的列表进行比较,或者首先建立现有对的目录。然后你洗牌,总是选择第一个。还有一个提示:不要使用随机种子,你应该考虑引入一个持久性存储,比如一个原始数据库,或者mysql,甚至可能只有sqlite。这样就可以很容易地跟踪学习进度,更经常地问那个些看起来很难学的学生。谢谢你们,你们让我的大脑进入了状态。我不想在这个阶段走数据库路线——现在这有点过头了。但我喜欢你的想法,即设置现有的双目录,然后洗牌-也许不太优雅,但它的工作。谢谢不客气,玩得开心!