FUNCIONES CON NÚMEROS ALEATORIOS
La función para generar aleatorios es mt_rand($min,$max). Si no se especifica min/max entregará un N° entre 1 y 2.147.483.647 si min>max devuelve error. por eso antes de dispararla se debe controlar max y min. Para generar los N aleatorios usamos un bucle for(), en él generamos el aleatorio y lo introducimos incondicionalmente en el array.
En el que no se repiten usamos un bucle while() y antes de introducir el aleatorio en el bucle con un in_array() vemos si está ya cargado.
Obviamente necesitamos que max-min sea al menos el número N de aleatorios que deseamos, si no vamos a tener un bucle infinito ya que siempre va a encontrar alguno repetido. Si deseamos N números consecutivos desordenados aleatoriamente puede ser más conveniente usar . shuffle(array) ver
						
<head>
//validar min,max para que mt_rand() no de error
$valores01=array();
$valores02=array();
if (isset( $_POST["maxmin"])){
	if (strlen( $_POST["min"])>0){		//me asegura un min
		$min=$_POST["min"];
	}else{
		$min=1;
	}
	if (strlen( $_POST["max"])>0){		//me asegura un max
		$max=$_POST["max"];
	}else{
		$max=10;
	}
	if ($min>=$max){	// max>min o los intercambio
		$temp=$min;
		$min=$max;
		$max=$temp;
	}
// carga los 10 aleatorios con repeticiones permitidas
	$valores01=array();
	for($i=0;$i<10;$i++){
		$aleatorio=mt_rand($min,$max);
		array_push($valores01,$aleatorio);
	}
// carga los 10 aleatorios con repeticiones no permitidas
	$valores02=array();
   if (($max-$min<9)){   //necesito al menos 10 valores
		array_push($valores02,"max-min<10");
   }else{
		$i=0;
		while ($i<10) {
			$aleatorio=mt_rand($min,$max);
			if (!in_array($aleatorio,$valores02)) {
			  array_push($valores02,$aleatorio);
			  $i++;
			}
		  }
   }	
}
?>
</head>
<body>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" >
    	<div class="item">
		MIN  :<input name="min" type="text"  style="width:100px;" value="1"/>
	</div>
	<div class="item">
		MAX :<input name="max" type="text" style="width:100px; " value="10"/>
	</div>    
	<div class="item">
		<input name="maxmin" type="submit" value="Procesar" />
 	</div>
</form>
<div style="margin-top: 30px; margin-bottom: 30px;">
	La primer columna puede tener repetidos la segunda no
</div>
<div style=" margin-left:30px; margin-top:20px;">
	<div class="resultado" >
		<?php
			foreach($valores01 as $val) {
    				echo( $val . "<br>");
		}
		?>
    	</div>
	<div class="resultado" style="margin-left:20px;">
		<?php
			foreach($valores02 as $val) {
    				echo( $val . "<br>");
			}
		?>
    	</div>
</div>
</body>
							
					
© IQSystems 2023