Dovrei creare un sistema che mi dia 8 lettere random prese da un elenco creato da me, ho provato in vari modi, ora chiedo il vostro aiuto. Idee?
Dovrei creare un sistema che mi dia 8 lettere random prese da un elenco creato da me, ho provato in vari modi, ora chiedo il vostro aiuto. Idee?
Hai provato a fare un vettore con le lettere che ti servono e poi fare il random di un numero che va da 0 alla lunghezza del vettore?Originalmente inviato da mythologia
Poi ti basta prendere l'elemento presente in quella posizione del vettore
Metti le lettere che vuoi dentro un array, e poi usi array_rand per estrarne a caso.
Ciaooooo!!!!!!!
Esiste una funzione che estrae automaticamente una posizione random di un vettore??? Interessante....Originalmente inviato da debug
ecco l'errore, io le avevo messe in un array, ma non avevo usato array_rand.
Debug? Ma in array_rand() che valore devo inserire tra le parentesi?
wider: perchè magari gli serve in php???
Ciaoo!!
Ultima modifica di debug : 19-03-2005 alle ore 18.09.20
AZZ tutti insieme!
Allora mitho:
array_rand($tuoarray);
e ti estrae un elemento a caso.
Poi se vuoi che tale elemento sia tolto dall'array è un altro paio di maniche...
Ciaooo!!!
js lo avevo provato, ma è meglio con php :grin:
Livello 3 ti dice niente con php?Originalmente inviato da wider
Se avrà postato qui ci sarà un motivo... sennò postava all'1... :winkOLD:
E poi php è molto più comodo di javascript
si, ma come faccio a farne estrarre solo 8??
L'array lo avevo pensato, ma non conoscevo array_rand()
Cicla:
for (i=0; i<=7; i++)
giusto, l'avevo fatto già con rand, ma senza array_
con altre cose, mi ero dimenticato :D
Intendi che magari nell'array ne hai di più?
Allora fai così:
$mioarray=array("a","b","c");
$lunghezza=count($mioarray);
for($i=0;$i<$lunghezza;$i++){
$nrand=rand(0,count($mioarray));
echo "Lettera estratta: ".$mioarray[$nrand]."<br>\n";
array_splice($mioarray,$nrand,1);
}
dovrebbe fungere (l'ho scritto di botto)
Ciaooooo!!!!!!!!!
no
io creo un array
$mioarray=array("a","b","c","d","e","f","g","h");
for($i=1;$i<8;$i++){
echo array_rand($mioarray);
}
Uhm... i vettori partono da 0 se non sbaglio.... :winkOLD:Originalmente inviato da mythologia
Mytho ma in quel modo è probabile che ti estrai lettere uguali anche consecutivamente!
Ciaooo!!!!!
si, ma le lettere nell'array saranno 42, quindi...
Quindi che? :D
Quidi la probabilità rimane, anche se fossero dieci milioni! ;)
Cmq se a te serve così allora avevo capito male io! ;)
Ciaoooooo!!!!!!!
vabbè se vuole evitare ripetizioni di lettere basta fare
e nell'array output si sitrova la sequenza delle 8 lettereCodice PHP:
$mioarray=array("a","b","c","d","e","f","g","h");
$output=array();
for($i=0;count($output)<8;$i++)
{
$temp=array_rand($mioarray);
if (!in_array($temp,$output))
$output[]=$temp;
}
mavericck
Ultima modifica di mavericckweb : 19-03-2005 alle ore 21.32.47
no, va bene anche se le lettere si ripetono
problema:
Invece di stamparmi le lettere con questo metodo mi stampa il numero corrispondente alla lettera.
Se nell'array t è la 15 lettera, stampa 15
allora dovrei fare un if($a == 15){$b="a";}, ma sarebbe troppo lungo per tutte le lettere, soluzione??
Penso che la soluzione sia questa (presa da php.net):Originalmente inviato da mythologia
Codice PHP:
<?
srand((float) microtime() * 10000000);
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$chiavi = array_rand($input, 2);
echo $input[$chiavi[0]] . "\n";
echo $input[$chiavi[1]] . "\n";
?>
srand((float) microtime() * 10000000);
a che serve??
array_rand($input, 2);
ovvero me ne estrae 2???
se non sbaglio serve a inizializzare il random in base al tempo (se è uguale al c dovrebbe essere così...)Originalmente inviato da mythologia
si, nel tuo caso metti array_rand($input, 8);Originalmente inviato da mythologia
l'esempio riportato sul manuale di php spiega l'uso di array_rand con il secondo parametro dichiarato, cioè l'estrazione di più chiavi contemporaneamente, che vengono messe in un array (per questo usa echo $input[$chiavi[0]])Originalmente inviato da mystico
penso che invece per risolvere il problema di mytologia basti fare
echo $mioarray["$ris"];
dove mioarray è il vettore di tutte le lettere e ris il risultato della funzione array_rand
ma può anche essere che io non abbia capito esattamente qual è il problema
se è così, fate come se non abbia detto niente
mavericck
Se non ricordo male gli servivano 8 lettere e al posto di fare un ciclo (che forse è più pesante) è meglio qesta funzione penso....
Quindi io farò cosìCodice PHP:
<?
$input = array("a", "b", "c", "d", "e"....);
$chiavi = array_rand($input, 8);
echo $input[$chiavi[0]].$input[$chiavi[1]] . $input[$chiavi[2]]. $input[$chiavi[3]]...
?>
esatto!
pensavo però volesse continuare ad utilizzare la procedura con il ciclo.. sorry!
Beh, per l'echo forse conviene un ciclo...
Codice PHP:
for ($i=0; $i<8; $i++) echo "$input[$chiavi[$i]]";