ciclo for di terzine e estrazione numero casuale

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Ho ribisogno di un vs asaiutino perchè non ho la minima idea di come sia possibile fare unac osa del genere seppur abbia rovato alcune strade.

In pratica ho x nomi

vorrei creare tante fasce da 3 in funzione dei nomi ed estrarre un numero a sorte tra questi e creare altre 3 fasce da x/3,

in sostanza

nomi da 1 a 24 dividere in terzine

1-2-3
4-5-6
7-8-9
10-11-12
13-14-15
16-17-18
19-20-21
22-23-24

poi per ogni terzine prendere un numero e metterlo in una fascia

FAscia A
1 - 5 - 9 - 10 -14 -18 - 19 - 23
Fascia B
2-6--7- 11 - 15 - 16 - 20 - 24
Fascia C
3 - 4 - 8 - 12 - 13 - 17 - 21 - 22

Ho provato con un ciclo for usando un icnremento am tutt'alpiù riescoa dividere in terzine ma poi non riesco a salvarle in un contenitore

Ok come non detto, mentre scrivevo sono risucito a risolvere la prima parte cosi

PHP:
$y=count(elementi);/////////in questo caso sono 24
$x=count($contenitori);//in questo caso sono 3
for($n=1;$n<=$x;$n++){
for ($i =0+$n; $i <=$y;$i+=$x) {
echo $i."<br>";
}
}

questo, nel caso di 24 elementi mi restituisce le 3 combinaizoni da 8 anche se non casuali come volevo io cmq sia

PHP:
1
4
7
10
13
16
19
22
2
5
8
11
14
17
20
23
3
6
9
12
15
18
21
24

però ora non riesco a salvarle in un nuovo multiarray che deve essere composto cosi

PHP:
$multi=array(
[contenitore1]=1-4-7-10-13-16-19-22
[contenitore2]=2-5-8-11-14-17-20-23
[contenitore1]=3-6-9-12-16-18-21-24
)
mi sto elggermente rimbabendo e credo di aver ingarbugliato un pò il ciclo perche avrei dovuto, non so cocme impartire prima l'ordine di fare i 3 gruppi da 8
 
Mamma che fatica. Penso di aver consumato il 90% dei neuroni .

cmq ho risolto così

PHP:
///stabilisco el variabili di base epr i conteggi
$cont=explode(",",$cont);
$x=count($cont);
$y=count($gruppi);

//creo il cilclo
for($n=1;$n<=$x;$n++){///devo ciclare epr n contenitori in questoc aso 3
for($i=0+$n;$i<=$y;$i+=$x){//stabilisco che deve incrementare di 3 in tre per un massimo totale del numero di gruppi in questo caso 24
		///mi restituisce i 3 gruppi di numeri aumentati di 3	
			foreach($gruppi as $key2=>$gru){// 1=>pippo 2=> topolino 3=>pluto
//apro l'array dei gruppi con i nomi
if($i==$key2){
//quando i è uguale alla chiave crea il nuovo array
$new_num[$n-1][]=$gru;//inserisco il meno uno perchè n parte da 1 quindi da avere 0 1 2 
}
}
} 
}
//ora ho un nuvo multiarray cosi composto  0=>{1=>pippo,  4=>topolino 7=>pluto etc.. } 1=>{2=>paperino , 5=>papergoa  8=>paperone etc.. } 




	foreach($new_num as $key1=>$num){//apro il mnulti array
		foreach($cont as $key=>$c){///prendo le chiavi dei contenitori 0=>contenitore1, 1=>contenitore2 etc..

if($key1==$key){//quandfo la chaive del contenitore è uguale alla chiave del nuovo array ricreo un nuovo array con il nome del contenitore
$new_pos[$c]=$num;
}
}
}
finalemnte
[contenitore1]=>array(1=>pippo, 4=>topolino 7=>pluto etc.. )
[contenitore2]=>array(2=>paperino , 5=>papergoa 8=>paperone etc.. )
etc.
 
ciao
ho visto che hai risolto, però dici che vorresti randomizzare.
se ti sserve ancora dai un occhio a questo schema che riprende la tua prima parte
PHP:
<?php
//$y=count(elementi);/////////in questo caso sono 24
//$x=count($contenitori);//in questo caso sono 3
$y=6;
$x=2;
for($n=1;$n<=$x;$n++){
	for ($i =0+$n; $i <=$y; $i+=$x) {
		$elemento[]=$i;
		//echo $i."<br>";
	}
}
echo "<pre>";
var_dump($elemento);
shuffle($elemento);//randomizzo
var_dump($elemento);
echo "</pre>";
?>
 

Discussioni simili