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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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";
?>
 

otto9due

Utente Attivo
22 Feb 2014
591
25
28
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..
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

otto9due

Utente Attivo
22 Feb 2014
591
25
28
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se devi "ricordare" i valori estratti, non hai scampo, ti serve un db, forse si può fare anche con un file txt se non hai il db
 
Discussioni simili
Autore Titolo Forum Risposte Data
felino Lubuntu 18.04 Requisiti per applicazione console .net core 7.0 Linux e Software 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
E Aiuto per query PHP 8
E Il punto di riferimento italiano per Trailers cavalli Discussioni Varie 0
F CERCO Servizi SEO di Qualità per Agenzie di Servizi SEO e Posizionamento 3
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
R Plugin di base per WordPress WordPress 0
D [COMPRO/CERCO] GUEST POST o scambio link per sito di Spiritualità ed Esoterismo. Vendere e Acquistare pubblicita' online 0
L Suggerimento Pagespeed per non vedenti HTML e CSS 0
M Analisi sito per pulire codice inutile HTML e CSS 1
Paolo69 Risolto reCAPTCHA v2 per ASP Classic ASP 0
M Hosting VPS per server di gioco Minecraft Hosting 0
N Grazie per il benvenuto Presentati al Forum 0
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
R Filtri e plugin per photoshop Photoshop 0
AkTaRuS DIsabilitare il tasto destro tranne che per code e pre Javascript 1
0 [Retribuito] Cercasi programmatore per GdR PbC Offerte e Richieste di Lavoro e/o Collaborazione 0
A Adempimenti per magazine on line Leggi, Normative e Fisco 0
R Recupero di permalink di un sito che è stato eliminato per errore WordPress 5
I aiuto urgente per thunderbird Posta Elettronica 0
A Web master per semplice sito web Offerte e Richieste di Lavoro e/o Collaborazione 2
M [Cerco][Gratuito] Artista/designer per creazione grafica gioco di società Offerte e Richieste di Lavoro e/o Collaborazione 0
M Un saluto per cominciare Presentati al Forum 1
N MAX() + ADD_DATE - per update su Mysql MySQL 0
G Qualcuno conosce questo software per gestire le telecamere IP Cam e Videosorveglianza 0
A [CERCO] Articolista per siti a tema eventi e feste private Offerte e Richieste di Lavoro e/o Collaborazione 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
I aiuto per outlook Posta Elettronica 0
L Script per convertire numeri in parole Javascript 2
J [Cerco] [Collaborazione gratuita] Grafico per piccoli lavori di grafica Offerte e Richieste di Lavoro e/o Collaborazione 0
M Memorizzazione temi per le diverse pagine del sito Javascript 1
otto9due Proteggere file caricati dall'esterno ma renderli accessibili per gli utenti loggati. PHP 4
E Consigli per hosting reseller Hosting 0
T aiuto per trasformare un quiz fatto in JS in un quiz in JQUERY jQuery 0
F Cerco fotografo per sito abiti da sposa Discussioni Varie 2
R [cerco][retribuito] Collaborazione per creazioni loghi ed altro Offerte e Richieste di Lavoro e/o Collaborazione 0
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
seranto Blocco preventivo e Registro dei Consensi per Cookie tecnici? Leggi, Normative e Fisco 2
D Come estendere la tariffa per Wordpress con Visa? Hosting 1
M Fullcalendar in Codeigniter, un aiuto per la chiamata $ajax ? jQuery 0
N Consigli SEO per il mio sito di web design SEO e Posizionamento 0
P Proiezione di Gauss per grafica su sfera in PVC Photoshop 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
MarcoGrazia Categorie per settore merceologico di Google SEO e Posizionamento 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
matteoraggi Local seo per un B&B di Forli SEO e Posizionamento 3
D Ical: Sto realizzando un gestionale per i miei appartamenti di casa vacanza PHP 0
S Teams software per i meeting Windows e Software 0
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1

Discussioni simili