The Elder Scrolls Forum - ESO, Skyrim, Oblivion, Morrowind & GDR

Aiutino in matematica?

« Older   Newer »
  Share  
CiaoKeFai360
view post Posted on 30/4/2012, 20:35




Come fare in modo che 10 numeri (facciamo x0,x1,x2,x3,x4,x5 ecc.), generandoli con una formula matematica, abbiamo 10 valori diversi che siano maggiori o uguale a 1 e minore o uguale a 20?

Mi spiego meglio..
Considerando ad esempio che la parola "casuale" fosse una formula matematica strutturata così:
X= Casuale (N1, N2)
Dove N1 ed N2 sono rispettivamente il numero minimo e il numero massimo, e tutta la formula fa si che venga generato un numero "X" casuale che vada da 1 a 20, come faccio a generarne altri 9 in modo che siano diversi da X?

 
Top
view post Posted on 30/4/2012, 21:19
Avatar

And remember, a headshot is always a lethal takedown

Group:
TES Founder
Posts:
48,530
Location:
Brianza

Status:


Sicuramente è un problema matematico applicato ad informatica.

Solite palle rompiscatole...

Allora, ti serve un vettore che conterrà i numeri casuali che ti sono usciti. Ad ogni generazione di numero casuale (uno nuovo), assicurati di fare un controllo su tutti i singoli elementi del vettore, ciclandolo fino ad arrivare in fondo. (10 giri, visto che ti servono 10 numeri in totale)

Quindi avrai due controlli sulla generazione:
1- che stiano tra N1 minore e N2 maggiore.
2- che il numero appena uscito non sia già contenuto nel vettore.

Non aggiungo altro sennò finisci per non imparare nulla. A informatica bisogna che ti spremi il cervello come un limone :D
 
Web Contacts  Top
CiaoKeFai360
view post Posted on 1/5/2012, 08:13




Signor Scan, grazie come sempre, non ho capito molto bene, ma mi sa che mi hai fatto venire un idea veramente carina :D. Ps: Sisi, è applicato all'informatica asd
 
Top
Ray.
view post Posted on 1/5/2012, 09:17




Se hai qualche nozione di informatica puoi creare un diagrammino di flusso con le indicazioni che ti ha dato scan, che faccia questo per te. Puoi farlo con uno qualsiasi dei compilatori presenti in rete!

Se non l'hai mai fatto sarà un buon esercizio per avvicinarsi al mondo della programmazione ;) (cosa che potrebbe tornarti molto utile in futuro)
 
Top
view post Posted on 1/5/2012, 13:21

Daedra

Group:
Utenti Onorari
Posts:
17,500

Status:


Vedo che è stato già detto tutto, posso solo metterti una pseudocodifica fatta un po alla ca... per orientarti :sisi:.
CODICE
dichiarazione vettore grande 10;
dichiarazione indice = 0, indice2;
while (indice < 10)
{
vettore[indice] = numero generato random;
indice2 = 0;
while(indice2 < indice)
{
se(vettore[indice] == vettore[indice2])
{
indice--;
esci dal while interno;
}
indice2++;
}

indice++;
}


Per evitare di dirti cag..te lo ho provato, ecco il codice commentato in C# se ti può servire
CODICE
{
           Random rnd = new Random(); // dichiarazione variabile random e creazione
           int indice = 0, indice2; //dichiarazione indici ed inizializzazione primo indice
           int numeridagenerare = 10, rmin = 1, rmax = 20; //dichiarazione variabili per rendere eventualmente dinamico il codice
           int[] vettore = new int[numeridagenerare]; //dichiarazione e creazione vettore

           while (indice < numeridagenerare) //finché indice è minore di numeridagenerare
           {
               vettore[indice] = rnd.Next(rmin, rmax); //assegna alla componente attuale del vettore un numero casuale tra rmin e rmax
               indice2 = 0; //inizializza il secondo indice
               while (indice2 < indice) //finché indice2 è minore di indice, e dunque per tutti gli elementi finora assegnati al vettore tranne quello corrente
               {
                   if (vettore[indice] == vettore[indice2]) //se l'elemento attuale del vettore è uguale ad uno qualsiasi di quelli già assegnati
                   {
                       indice--; //decrementa indice in modo da far generare un nuovo numero casuale avendo sempre numeridagenerare elementi
                       break; //esce dal while interno, ma si può anche farne a meno
                   }
                   indice2++;//incrementa indice2 per scorrere i componenti precedenti
               }
               indice++; //incrementa indice per poter passare alla generazione del successivo elemento
           }
       }
 
Web  Top
CiaoKeFai360
view post Posted on 1/5/2012, 19:17




Grazie wolf, ma purtroppo non ci capisco una beata Min***a xD
 
Top
view post Posted on 2/5/2012, 06:09

Daedra

Group:
Utenti Onorari
Posts:
17,500

Status:


Del codice posso capirlo.. Ma è commentato dunque lo si dovrebbe capire senza problemi :omg:
Ad ogni modo guarda quella "pseudo pseudocodifica" e almeno la logica dovresti riuscire a capirla ed a riprodurla nel linguaggio che desideri :sisi:
 
Web  Top
CiaoKeFai360
view post Posted on 3/5/2012, 13:41




Bhe, un pochino mi sono orientato :|

Il programma l'ho fatto secondo voi ha errori?
$N0=0
$N1=0
$N2=0
$N3=0
$N4=0
$N5=0
$N6=0
$N7=0
$N8=0
$N9=0
$errore=6
While $errore=6
$N0=InputBox ("Inserisci il primo numero","Da 1 a 20")
$N1=InputBox ("Inserisci il secondo numero","Da 1 a 20 ")
$N2=InputBox ("Inserisci il terzo numero","Da 1 a 20 ")
$N3=InputBox ("Inserisci il quarto numero","Da 1 a 20 ")
$N4=InputBox ("Inserisci il quinto numero","Da 1 a 20 ")
$N5=InputBox ("Inserisci il sesto numero","Da 1 a 20 ")
$N6=InputBox ("Inserisci il settimo numero","Da 1 a 20")
$N7=InputBox ("Inserisci l'ottavo numero","Da 1 a 20 ")
$N8=InputBox ("Inserisci il nono numero","Da 1 a 20 ")
$N9=InputBox ("Inserisci il decimo numero","Da 1 a 20 ")
Select
Case $N0<>$N1<>$N2<>$N3<>$N5<>$N4<>$N7<>$N6<>$N8<>$N9 and $N0 <= 20 and $N1 <= 20 and $N2 <= 20 and $N3 <= 20 and $N4 <= 20 and $N5 <= 20 and $N6 <= 20 and $N7 <= 20 and $N8 <= 20 and $N9 <= 20
$numero1=0
$numero2=0
$numero3=0
$numero4=0
$numero5=0
$numero6=0
$numero7=0
$numero8=0
$numero9=0
$numero0=0
$ricominciare=0
$rifare=0
$ricominciare=1
$rifare=1


$numero1= Random (1,20,1)
$numero2= Random (1,20,1)
While $ricominciare=1
While $rifare=1
Select
Case $numero1=$numero2
$numero2=0
$Numero2= Random (1,20,1)
$rifare=1
Case $numero1<>$numero2
$rifare=2
EndSelect
WEnd
While $rifare=2
$numero3=Random (1,20,1)
Select
Case $numero3=$numero1 or $numero3=$numero2
$numero3=0
$numero3=Random (1,20,1)
$rifare=2
Case $numero1 <>$numero3 and $numero2<>$numero3
$rifare=3
EndSelect
WEnd
While $rifare=3
$numero4=Random (1,20,1)
Select
Case $numero1=$numero4 or $numero2= $numero4 or $numero3=$numero4
$numero4=0
$numero4=Random (1,20,1)
$rifare=3
Case $numero1<>$numero4 and $numero2<>$numero4 and $numero3 <>$numero4
$rifare=4
EndSelect
WEnd
While $rifare=4
$numero5=Random (1,20,1)
Select
Case $numero1=$numero5 or $numero2= $numero5 or $numero3=$numero5 or $numero4=$numero5
$numero5=0
$numero5=Random (1,20,1)
$rifare=4
Case $numero1<>$numero5 and $numero2<>$numero5 and $numero3 <>$numero5 and $numero4<>$numero5
$rifare=5
EndSelect
WEnd
While $rifare=5
$numero6=Random (1,20,1)
Select
Case $numero1=$numero6 or $numero2= $numero6 or $numero3=$numero6 or $numero4=$numero6 or $numero5=$numero6
$numero6=0
$numero6=Random (1,20,1)
$rifare=5
Case $numero1<>$numero6 and $numero2<>$numero6 and $numero3<>$numero6 and $numero4<>$numero6 and $numero5<>$numero6
$rifare=6
EndSelect
WEnd
While $rifare=6
$numero7=Random (1,20,1)
Select
Case $numero1=$numero7 or $numero2= $numero7 or $numero3=$numero7 or $numero4=$numero7 or $numero5=$numero7 or $numero6=$numero7
$numero6=0
$numero6=Random (1,20,1)
$rifare=6
Case $numero1<>$numero7 and $numero2<>$numero7 and $numero3<>$numero7 and $numero4<>$numero7 and $numero5<>$numero7 and $numero6<>$numero7
$rifare=7
EndSelect
WEnd
While $rifare=7
$numero8=Random (1,20,1)
Select
Case $numero1=$numero8 or $numero2= $numero8 or $numero3=$numero8 or $numero4=$numero8 or $numero5=$numero8 or $numero6=$numero8 or $numero7=$numero8
$numero8=0
$numero8=Random (1,20,1)
$rifare=7
Case $numero1<>$numero8 and $numero2<>$numero8 and $numero3<>$numero8 and $numero4<>$numero8 and $numero5<>$numero8 and $numero6<>$numero8 and $numero7<>$numero8
$rifare=8
EndSelect
WEnd
While $rifare=8
$numero9=Random (1,20,1)
Select
Case $numero1=$numero9 or $numero2= $numero9 or $numero3=$numero9 or $numero4=$numero9 or $numero5=$numero9 or $numero6=$numero9 or $numero7=$numero9 or $numero8<>$numero9
$numero9=0
$numero9=Random (1,20,1)
$rifare=8
Case $numero1<>$numero9 and $numero2<>$numero9 and $numero3<>$numero9 and $numero4<>$numero9 and $numero5<>$numero9 and $numero6<>$numero9 and $numero7<>$numero9 and $numero8<>$numero9
$rifare=9
EndSelect
WEnd
While $rifare=9
$numero0=Random (1,20,1)
Select
Case $numero1=$numero0 or $numero2= $numero0 or $numero3=$numero0 or $numero4=$numero0 or $numero5=$numero0 or $numero6=$numero0 or $numero7=$numero0 or $numero8<>$numero0 or $numero9=$numero0
$numero0=0
$numero0=Random (1,20,1)
$rifare=9
Case $numero1<>$numero0 and $numero2<>$numero0 and $numero3<>$numero0 and $numero4<>$numero0 and $numero5<>$numero0 and $numero6<>$numero0 and $numero7<>$numero0 and $numero8<>$numero0 and $numero9<>$numero0
MsgBox (0,"I numeri usciti sono", $numero0 & @cr & $numero1 & @cr & $numero2 & @cr & $numero3 & @cr & $numero4 & @cr & $numero5 & @cr & $numero6 & @cr & $numero7 & @cr & $numero8 & @cr & $numero9)
$rifare=0
EndSelect
WEnd
If $rifare=0 Then
$ricomincia=0
EndIf
WEnd
$errore=MsgBox (4,"Risultato ottenuto","Numeri Inseriti:" & @CR & $N0 & @CR & $N1 & @CR & $N2 & @CR & $N3 & @CR & $N4 & @CR & $N5 & @CR & $N6 & @CR & $N7 & @CR & $N8 & @CR & $N9 & @CR & @Cr & "Numeri usciti:" & @CR & $numero0 & @CR & $numero1 @CR & $numero2 @CR & $numero3 @CR & $numero4 @CR & $numero5 @CR & $numero6 @CR & $numero7 @CR & $numero8 @CR & $numero9)
Case $N0 > 20 or $N1 > 20 or $N2 > 20 or $N3 > 20 or $N4 > 20 or $N5 > 20 or $N6 > 20 or $N7 > 20 or $N8 > 20 or $N9 > 20
$errore= MsgBox (4, "Errore", "Hai inserito uno o più numeri maggiori di 20" & @CR & "Devi inserire solo numeri compresi tra 1 e 20" & @CR & "Vuoi riinserire nuovi numeri?")
Case not $N0<>$N1<>$N2<>$N3<>$N5<>$N4<>$N7<>$N6<>$N8<>$N9
$errore= MsgBox (4,"Errore", "Hai inserito dei numeri uguali" & @CR & "Devi inserire 10 numeri diversi tra loro" & @CR & "Vuoi riinserire nuovi numeri?")
EndSelect
wend
 
Top
view post Posted on 3/5/2012, 14:06

Daedra

Group:
Utenti Onorari
Posts:
17,500

Status:


Ma non dovevi generare casualmente N numeri tra A e B in modo tale che fossero diversi l'uno dall'altro? :omg: Forse ho capito male io :omg:
 
Web  Top
CiaoKeFai360
view post Posted on 3/5/2012, 18:57




No xD, dovevo generare casualmente 10 numeri dal valore compreso tra 1 e 20, tutti diversi fra loro
 
Top
view post Posted on 3/5/2012, 19:25

Daedra

Group:
Utenti Onorari
Posts:
17,500

Status:


Uhmmm, allora non capisco questo pezzo:

CODICE
$N0=InputBox ("Inserisci il primo numero","Da 1 a 20")
$N1=InputBox ("Inserisci il secondo numero","Da 1 a 20 ")
$N2=InputBox ("Inserisci il terzo numero","Da 1 a 20 ")
$N3=InputBox ("Inserisci il quarto numero","Da 1 a 20 ")
$N4=InputBox ("Inserisci il quinto numero","Da 1 a 20 ")
$N5=InputBox ("Inserisci il sesto numero","Da 1 a 20 ")
$N6=InputBox ("Inserisci il settimo numero","Da 1 a 20")
$N7=InputBox ("Inserisci l'ottavo numero","Da 1 a 20 ")
$N8=InputBox ("Inserisci il nono numero","Da 1 a 20 ")
$N9=InputBox ("Inserisci il decimo numero","Da 1 a 20 ")

Perché fai inserire all'utente i numeri? :tradi:
 
Web  Top
CiaoKeFai360
view post Posted on 4/5/2012, 19:20




Perchè lo scopo del programma è un altro..
 
Top
11 replies since 30/4/2012, 20:35   68 views
  Share