VB Aiutino Vb 08

Stato
Discussione chiusa ad ulteriori risposte.

Vipper10

Utente Gold
3 Aprile 2009
1,181
32
62
268
Ultima modifica:
Sera a tutti...
Ho iniziato ad usare vb 08 da poko...
Dp qlk programmino creato ho deciso di fare un generatore di numeri casuali.
Sono riuscito a crearlo ma l uniko problema è ke voglio ke nelle 10 textbox escano numeri random diversi nn nella stessa...
Come posso risolvere qst problema????'
Grazie in anticipo x le risposte :)
 
Il fatto è che tirando un random ovviamente può uscire di nuovo un numero già uscito, io risolverei con un array che controlla i valori estratti.

Te lo scrivo in vb6 dato che non uso vb2008, basta che traduci la sintassi...il ragionamento ovviamente è identico

PHP:
dim matrix[10] as boolean
dim a as integer
a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text1.text = "Numero random estratto " & a
 
Ultima modifica:
Io in C# la faccio così... Purtroppo Vb.Net non lo conosco


PHP:
 Random rand = new Random();

 int n = rand.Next(0, 10); 

 MessageBox.Show(n.ToString());

Comunque sono entrambi del .net per cui deve essere simile


Prova qualcosa del tipo:

PHP:
Dim rand as Random
dim n as integer
n = rand.Next(min, max)
MessageBox.Show(n.ToString)

Non ti garantisco nulla XD Io VB.net l'ho usato solo a gennaio dell'anno scorso per qualche settimana XD


Prova coi frammenti di codice :)
 
cmq forse nn avete capito... mi spiego meglio...
voglio ke nelle 10 textbox escano numeri random diversi nn nella stessa...
 
Ultima modifica:
ahhhhhhhh e allora fai un ciclo...

PHP:
 Random rand = new Random();

 int n; 

Object[] txtBoxs  = new Object[] {TextBox1, TextBox2, TextBox3.....};

for(int a = 0; a<=9; a++)
{
n =  rand.Next(0, 10); 
txtBoxs[a].Text = n.ToString();
}

Bah... come ti ho giò detto prima io uso C#, ma in visual basic i cicli sono un po' diversi... adattalo tu.
 
Scusa per la stupida domanda hai controllato in quelle guide tipo html ecc... se ce qualche esempio su cosa cerchi non che dirti ..xD
 
cmq se generi molti numeri velocente otterrai tutti numeri uguali... semplicemente per il fatto che il random non è random, ma è pseudo-random e quindi usa informazioni vere (temperatura della cpu, clock del pc) per generare numeri, e se ne crei due di seguito magari l'informazione che usa non è cambiata, oppure non è stato aggiornato il riferimento, e quindi si genera lo stesso numero
 
daniele in vb6 (non so se c'è pure in vb2008 o in C) basta scrivere
Codice:
Randomize
e quando esegui il programma utilizza funzioni random diverse ritornandoti valori casuali.

Ad ogni modo la tua considerazione è sensata, ma sinceramente anche mettendo un while non ho mai notato valori random vicini, pure creando un grafico che salvava tutti i vari valori ^^

Comunque senza andare troppo OT per riempire 10 text box basta che prendi il mio codice e ci metti un ciclo, ad esempio un "For" come ha proposto Steph :)

PS: per il random la funzione base è un ciclo continuo che va adesempio da 0,000 a 1,000 con passaggi di 0,001, ogni volta che chiami la funzione ti torna il valore di quel momento
 
Provando il ciclo che ho messo prima, col for... ho notato che mi esce sempre lo stesso valore!!! Ma è strano perchè in teoria la funzione random è all'interno del ciclo è dovrebbe essere riattivata a ogni esecuzione del for.... XD Per esempio, se al primo textBox mi esce 1, anche tutti gli altri sono 1.. e così via...
 
per quello ho messo una matrice nel mio :)
in pratica controllo se quel valore è gia uscito associando un valore true o false alla variabile x della matrice (array)
poi vabbè ho fatto l'esempio con gli interi da 1 a 10, si può fare quello che si vuole ovviamente
 
XD Già.... ho una brutta esperienza su questo campo... ricordo che l'anno scorso a natale sono andato a scassare a mezzo Infernet-x perchè non riuscivo a fare una tombola che una volta preso un valore lo scartasse dall'array XD Alla fine avevo fatto un arrayList, dove una volta preso un elemento lo toglieva dall'arrayList...
XD Non ci avevo pensato a settare un bool, è molto conveniente mi sa XD
 
già già qua ci sono dieto anni di programmazione xD
comunque mi sa che qua abbiamo risolto il problema, si potrebbe anche chiudere qua.
 
Ultima modifica:
Eccomi sn mancato oggi... Edit è stato un caso l uscita dei numeri uno diverso dall altro
 
Forse con il ciclo non ti è chiaro, allora lo scrivo per esteso >.<

Codice:
dim matrix[10] as boolean
dim a as integer
a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text1.text = "Numero random estratto " & a  
'scrivo nella prima textbox

a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text2.text = "Numero random estratto " & a  
'scrivo nella seconda textbox

a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text3.text = "Numero random estratto " & a  
'scrivo nella terza textbox

a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text4.text = "Numero random estratto " & a  
'scrivo nella quarta textbox

a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text5.text = "Numero random estratto " & a  
'scrivo nella quinta textbox

a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text6.text = "Numero random estratto " & a  
'scrivo nella sesta textbox

a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text7.text = "Numero random estratto " & a  
'scrivo nella settima textbox

a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text8.text = "Numero random estratto " & a  
'scrivo nella ottava textbox

a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text9.text = "Numero random estratto " & a  
'scrivo nella nona textbox

a = int(math.rnd()*10)
while matrix[a] = true
a = int(math.rnd()*10)
wend
text10.text = "Numero random estratto " & a  
'scrivo nella decima textbox

ora dovremmo esserci...
EDIT: metto in code e non in php perchè sennò aballa tutti i commenti <.<
 
viene eseguito il ciclo finchè non trova una valore di a falso, ovvero che non è ancora stato estratto. Inizialmente, quando lo dichiari, l'array ha tutti false
 
con un ciclo for nn si farebbe prima? cmq se un numero non deve uscire due volte non è random, in quanto esso rientra nelle possibilità...
 
dani l'ho fatto per esteso quello delle 10 texbox perchè non gli era chiaro il for
comunque non esce due volte se imposti una matrice :O anzi, meglio, se esce due volte lo stesso torni a chiamare il random per ottenere un numero diverso...
 
Stato
Discussione chiusa ad ulteriori risposte.