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

otto9due

Utente Attivo
22 Feb 2014
529
21
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.042
149
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
529
21
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.042
149
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
529
21
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.042
149
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
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
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1
P Aiuto per rendere un Bot Telegram Privato PHP 1
V Query per una somma PHP 2
A Tabella con bottoni per aggiornamento record PHP 6
G Consigli SEO per scrittura e struttura pagine SEO e Posizionamento 6
P Passare solo alcuni parametri a script per CSV PHP 0
A Consiglio per creazione sito web CMS (Content Management System) 0
A Regex per isolare link interni con rel noopener PHP 0
L form immagini per il database PHP 0
S CREAZIONE DI SITO PER CORSI DI FORMAZIONE WordPress 1
I [cerchiamo][retribuito] Grafico/a per stickers Offerte e Richieste di Lavoro e/o Collaborazione 0
R Cercarsi programmatore per GDR PBC Offerte e Richieste di Lavoro e/o Collaborazione 0
L Sessione e array per utenti PHP 0
A Sottoquery con group by per mese MySQL 0
G Appicazione HTML per inserimento dai in Database Access Microsoft HTML e CSS 0
V [Cerco] Socio e Sviluppatore per App PlacesFinder Offerte e Richieste di Lavoro e/o Collaborazione 0
M user agent per il download di api PHP 0
B Stringa sql per ricerca su più campi Database 1
Cosina Upload multiplo con invio allegati per email PHP 0
P Editor per la realizzazione di siti HTML e CSS 2
M Versione nativa per M1. Photoshop 1
A Aiuto per pagina php PHP 0
M [Cerco] aiutanti per creare sito Offerte e Richieste di Lavoro e/o Collaborazione 8
T [cerco] scrittore/scrittrice per articoli web Offerte e Richieste di Lavoro e/o Collaborazione 5
L Interfaccia grafica per gestire sql server .NET Framework 1
B javascript per problemi con pdf e Safari Javascript 0
R Plugin per Gestire videocorsi a pagamento WordPress 3
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
C media per riga MySQL 1
I Cerca: blogger IT per articoli di prova Offerte e Richieste di Lavoro e/o Collaborazione 0
R Plugin per Registrazione Utente e Pagamento prodotto WordPress 2
M Quando ha l'immagine ingrandita è possibile fare rotazione per ritagliare? Photoshop 0
D modificare questo codice per inserimento in text e non in tabella jQuery 1
U [Cerco ] incremento traffico per il mio sito Vendere e Acquistare pubblicita' online 0
E Monitor per Photoshop Photoshop 0
S Libreria PHP per creare file dwg o dxf PHP 0
T cercasi aiuto per file d1 (open-edge db) Database 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
G un tool che trova nuovi clienti per web agency e web developer Offerte e Richieste di Lavoro e/o Collaborazione 2
A Mostrare dati database per pagine PHP 2
R cammino minimo per lista di picking: nodi "imposti" da visitare Programmazione 1
A [Vendo] Articoli per blog e siti ecommerce in ottica seo Offerte e Richieste di Lavoro e/o Collaborazione 0
N Mysql_result per PHP 7 PHP 2
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
E Cambiare lingua in Elements per Mac Mac e Software 2
S WEB APP PER AUTOMATIZZARE TASK INSTAGRAM Annunci servizi di Social Media Marketing 0

Discussioni simili