Rand() o mt_rand() per ottenere risultati alternativi.. non uguali per 3 estrazioni.

otto9due

Utente Attivo
22 Feb 2014
591
25
28
MI spiego meglio, ho un array contenente dei valori.. da questo array devo estrarre 3 valori tutti doversi tra loro una volta al giorno..

Attualmente utilizzo questa soluzione, ma non mi convince molto perchè secondo me molte volte tende a estrarre duplicati. Vorrei evitare di dover salvare i risultati nel db e confrontarli se possibile.. :rolleyes:

PHP:
<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>

Se aggiungessi uno shuffle() per Shakerare l'array :cool: , certo non eviterei i duplicati ma sarebbero più rari giusto??
Usando mt_rand() cambierebbe qualcosa?
 
Ultima modifica:
ciao
potresti fare così
PHP:
<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$casuale=$input;//questo se vuoi mantenere l'array originale, altrimenti shuffi derettamente $input
shuffle($casuale);
echo $casuale[0] . "\n";
echo $casuale[1] . "\n";
?>
 
ciao
potresti fare così
PHP:
<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$casuale=$input;//questo se vuoi mantenere l'array originale, altrimenti shuffi derettamente $input
shuffle($casuale);
echo $casuale[0] . "\n";
echo $casuale[1] . "\n";
?>

Ho fatto appunto questo test uhauhaa.. :cool:
Vi farò dopodomani quando otterrò i primi risultati e potrò controllarli e confrontarli..

Da alcuni test ch eho fatto dovrebbe variare un pochetto la situazione.. vedremo..
Per il momento grazie..
 
ciao
tieni presente che con pochi dati la casualità non sempre appare.
ti faccio un esempio:
se hai 4 dati la probabilità di estrane uno a caso è 0,25 (25%) quindi è probabile che tu abbia molte ripetizioni consecutive
se i dati sono 1000 la probabilita scende allo 0,1% quindi è difficile avere ripetizioni consecutive
 
ciao
tieni presente che con pochi dati la casualità non sempre appare.
ti faccio un esempio:
se hai 4 dati la probabilità di estrane uno a caso è 0,25 (25%) quindi è probabile che tu abbia molte ripetizioni consecutive
se i dati sono 1000 la probabilita scende allo 0,1% quindi è difficile avere ripetizioni consecutive

Si in effetti hai ragione ma nel mio caso dovrebbe essere così la situazione..

ho 10 / 12 valori circa ed a me interessa che estragga 3 valori da questi con quel procedimento, di cui almeno uno ( e nella migliore delle ipotesi 3 ) dev'essere diverso da quello estratto il giorno prima e diverso l'uno con l'altro..

Diciamo che la migliore ipotesi sarebbe quella di creare un meccanismo che estragga i tre valori, li salvi in un db e poi il giorno dopo vada a confrontarli con quelli estratti il giorno prima e se diversi sceglie il valore e lo sostituisce nel db per il confronto del giorno dopo..

Magari estrarre i tre valori in una array dal db.. e poi vedere se il valore estrapolato esiste nell'array..

PHP:
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
...
}

No forse conviene fare il controllo uno per volta..
Per domani provo così, se i risultati in un paio di giorni non sono positivi, tento così..
 
Ultima modifica:

Discussioni simili