Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-05-2004, 13:48   #1
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Record univoci

Ciao,

Qualcuno può indicarmi un buon metodo per realizzare l'estrazione di due record per volta da un DB che non siano univoci?

Mi spiego meglio: Devo realizzare una pagina la dove girano due banner pescati da un DB, dovrei fare in modo che non compaiono due banner uguali per volta...


Ciao
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2004, 15:46   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Per definizione se estrai due record per volta da una tabella non possono essere univoci...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2004, 11:44   #3
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Ci sarà però un qualcosa per poter avere due record estratti casualmente fra quelli presenti purche non siano tutte e due identici.
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2004, 12:06   #4
fabio_tarantino
Member
 
Iscritto dal: Nov 2002
Messaggi: 160
Cionci ha ragione...

ma il tuo problema lo risolvi a livello applicativo.

Diciamo che nel tuo db hai una tabella con un campo id e un campo banner. Se il campo id è una chiave primaria ovviamente nella tabella non possono coesistere due record con id uguale.

Da quello che ho capito devi tirare fuori da questa tabella due record qualunque basta che non abbiano id uguale

es: SELECT * FROM tabella WHERE (id=x) OR (id=y)

x e y nel tuo caso devono essere diversi.

Il controllo che siano diversi lo devi fare nella tua applicazione.

Ad esempio x e y li puoi tirare fuori da un generatore random e prima di richiamare la funzione di estrazione dal db (a cui passerai x e y) ti fai un cotrollo banale del tipo:

if (x==y) then x=y+random(10);
fabio_tarantino è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2004, 12:28   #5
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Bene, farò qualche prova in merito.

La procedura random credo che dovrebbe essere fatta forse sul numero massimo di record contenuti nel db.

Es. se nel db vi siano 20 record dovrebbero essere generati due random da 1 a 20
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2004, 20:23   #6
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
dipende da come estrapoli i dati, comunque la possibilità di estrarre casualmente la stessa tupla è 1/n in cui n è il numero di elementi.

MEMBRO DEL GRAN CONSIGLIO DELLE CACCOLEVERDI

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso

Ultima modifica di Fenomeno85 : 16-05-2004 alle 20:26.
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2004, 13:39   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Scusa, ma non puoi tirare casualemnte (da programma) i due numeri sul numero totale di record a livello di applicazione ?

Fai una select su tutti i record...li scorri tutti e visualizzi solamente quelli che hai tirato su casualmente...

Fenomento85: dovresti eliminare una delle due immagini dalla firma
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 09:55   #8
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
se devessi estrarre due id da 1 a 20 userei una funzione che mi dia il primo id casualmente e poi generi l'altro ancora casualmente ma ricorsivamente fino a quando non è diverso dal precedente generato
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 10:00   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da monkey72
se devessi estrarre due id da 1 a 20 userei una funzione che mi dia il primo id casualmente e poi generi l'altro ancora casualmente ma ricorsivamente fino a quando non è diverso dal precedente generato
Se sono due è facile... Si tira su il primo casualmente... Si tira su il secondo...se è uguale al primo si incrementa di 1 (in modulo 20)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 10:07   #10
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
così è sicuro che il secondo è diverso dal primo... però perdonami cionci... non è propriamente random in questo caso...
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 10:27   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Certo che è random...anche se ovviamente il numero successivo al primo ha una possibilità in più di essere estratto...

Altrimenti se si vuole fare propriamente random:

- si tira su il primo su N e lo chiamo X
- si tira su il secondo su N-1 e lo chiamo Y, se Y >= X allora Y = Y + 1; Y = Y modulo N

Fare un ciclo per tentare un'estrazione diversa non è una politica molto corretta
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 10:33   #12
fabio_tarantino
Member
 
Iscritto dal: Nov 2002
Messaggi: 160
Quote:
Originariamente inviato da cionci
Certo che è random...anche se ovviamente il numero successivo al primo ha una possibilità in più di essere estratto...

Altrimenti se si vuole fare propriamente random:

- si tira su il primo su N e lo chiamo X
- si tira su il secondo su N-1 e lo chiamo Y, se Y >= X allora Y = Y + 1; Y = Y modulo N

Fare un ciclo per tentare un'estrazione diversa non è una politica molto corretta
Scusa,
ma se la seconda estrazione la fai in un set che non contiene X allora Y è sicuramente diverso da X
fabio_tarantino è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 10:47   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da fabio_tarantino
Scusa,
ma se la seconda estrazione la fai in un set che non contiene X allora Y è sicuramente diverso da X
Certo...ma non ti sembra più facile come ho fatto io che farsi un vettore e compattarlo quando è uscito un numero ?

Pseudocodice:

X = pseudocasuale su N;
Y = pseudocasuale su N-1;
se Y > X allora Y = (Y + 1) modulo N-1;

Ultima modifica di cionci : 18-05-2004 alle 10:53.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 10:50   #14
fabio_tarantino
Member
 
Iscritto dal: Nov 2002
Messaggi: 160
Si si sono d'accordo!
fabio_tarantino è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 11:19   #15
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
boh... mi sento confusa
abbiate pazienza ma la mia mente non è più tanto allenata
ma se Y è un numero casuale nell'insime che non contiene X a che mi servono il controllo e l'assegnazione successiva
se Y > X allora Y = (Y + 1) modulo N-1?
eppoi se Y<N l'assegnazione Y = (Y + 1) modulo N-1 = Y + 1 allora a cosa mi serve il mod?
o non ci sto con la testa ma non ci arrivo...
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 11:37   #16
fabio_tarantino
Member
 
Iscritto dal: Nov 2002
Messaggi: 160
Quote:
Originariamente inviato da monkey72
boh... mi sento confusa
abbiate pazienza ma la mia mente non è più tanto allenata
ma se Y è un numero casuale nell'insime che non contiene X a che mi servono il controllo e l'assegnazione successiva
se Y > X allora Y = (Y + 1) modulo N-1?
eppoi se Y<N l'assegnazione Y = (Y + 1) modulo N-1 = Y + 1 allora a cosa mi serve il mod?
o non ci sto con la testa ma non ci arrivo...
ehm... mi sa che ti ho confuso io...

Dunque senza considerare l'insieme dei numeri:

X è tirato su in modo random
Anche Y è tirato su in modo random: ovviamente ci sono 2 casi
da considerare

1) se Y!=X -> no problem!
2) se Y==X ->

2a) Y==1 -> Y = Y + qualcosa_random
2b) Y==n -> Y = Y - qualcosa_random

qualcosa_random la fai come vuoi a mio giudizio
fabio_tarantino è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 11:42   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
"pseudocasuale su N" singifica estrarre un numero pseudocasule fra 1 e N...in questo caso 20...

"pseudocasuale su N-1" significa estrarre un numero fra 1 e 19 e quindi potrebbe comparire nuovamente il primo numero estratto...

Quindi se è maggiore o uguale a X si aggiunge 1 per escludere X dall'estrazione

In effetti il modulo 20 non serve a niente...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 11:43   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da fabio_tarantino
2a) Y==1 -> Y = Y + qualcosa_random
2b) Y==n -> Y = Y - qualcosa_random

qualcosa_random la fai come vuoi a mio giudizio
Molto più lungo di quello che ho detto io... Senza considerare che aggiungere o togliere qualcosa di random potrebbe fartelo diventare uguale a X
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 11:58   #19
fabio_tarantino
Member
 
Iscritto dal: Nov 2002
Messaggi: 160
Quote:
Originariamente inviato da cionci
Molto più lungo di quello che ho detto io... Senza considerare che aggiungere o togliere qualcosa di random potrebbe fartelo diventare uguale a X
veramente è il contrario!
Guardati bene cosa ho scritto!

E poi questo Y >= X allora Y = Y + 1 non è corretto visto che se Y=n sei fregato
fabio_tarantino è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2004, 12:25   #20
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
Quote:
Originariamente inviato da cionci
"pseudocasuale su N" singifica estrarre un numero pseudocasule fra 1 e N...in questo caso 20...

"pseudocasuale su N-1" significa estrarre un numero fra 1 e 19 e quindi potrebbe comparire nuovamente il primo numero estratto...

Quindi se è maggiore o uguale a X si aggiunge 1 per escludere X dall'estrazione

In effetti il modulo 20 non serve a niente...
mi sento meglio ora, pensavo di aver perso anche le minime cognizioni... xò perdonatemi... mi sembra una soluzione troppo complicata x un problema abbastanza semplice, non capisco xchè aggiungere 1 ad Y se è già > X... eppoi xchè togliere l'ultimo elemento dall'insieme e non quello già estratto? mi sfugge il senso...
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Musk incassa un altro maxi contratto IA:...
Le vendite di EV sono esplose in tutto i...
Avio si prepara ai test del Dimostratore...
Space Pioneer ha annunciato le cause del...
Anthropic avrebbe nuovi antibiotici cont...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v