Fonction aléatoire dans un tableau ?

Messages postés
7
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
16 février 2007
- - Dernière réponse : Glaudiuus
Messages postés
7
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
16 février 2007
- 3 févr. 2007 à 21:14
Bonjour,

J'ai un tableau à deux variables rempli de"0" et je souhaiterai qu'il me mette aléatoirement des "1"  dans un certain nombre de cases. Comment est ce que je peux faire une cette fonction aléatoire ?

Ensuite encore une petite question, comment trouver le min et le max d'une série de nombres, puis comment la trier ?

Merci
Afficher la suite 

5 réponses

Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7
0
Merci
Bonsoir,

Je ne te dirais pas tout, car cela un peu trop long. Dès qu'on parle de nombre aléatoire, il faut penser à la fonction RND. (et RANDOMIZE TIMER...). C'est une première piste... Recherche déjà cela.

Pour le min et max, il suffit de passer en revue chaque valeur des tableaux et de stocker dans une variable le min ou dans une autre la Max... avec un simple emploi d'une comparaison avec IF...

Ce n'est que quelques pistes...

Amicalement,
Us.
Commenter la réponse de us_30
Messages postés
53
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
11 juin 2010
1
0
Merci
Salut,


Par tableau à 2 variables, tu entends surement tableau à 2 dimensions (une matrice en fait).

Pour trouver les nombres aléatoires, il faut utiliser la fonction RANDOM. Va voir sur le site c'est expliqué.

Il faut juste que tu fasses un Random sur les lignes et les colonnes de ta matrice.

Par exemple si tu as un tableau de 10 lignes et 5 colonnes, il faut que
tu lances un Random sur les nombres de 0 à 10 pour trouver une ligne au
pif et un random sur les nombres compris entre 0 et 5 pour trouver une
colonne.

Une fois que tu as une ligne et une colonne obtenue au pif, tu mets un 1 dans la case correspondante.

Tu répètes l'opération autant de fois que tu désires mettres de "1".


Pour trouver le min et le max c'est aussi expliqué sur le forum. Cherche tu trouveras
Commenter la réponse de DD05
Messages postés
7
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
16 février 2007
0
Merci
Merci,


Pour utiliser la fonction aléatoire fonctionne très bien merci !


Par contre pour trouver le min et le max d'une série de nombre je ne
trouve rien à mon niveau... j'ai un niveau débutant ... et la seule
solution serais de comparer chaque nombre, mais celà devient très long
pour une grande série, y aurait-il une autre méthode ?


Et pour trier la série je vois encore moins comment je pourrais faire ?
Je maitrise seulement les fonctions de base et je dois faire sa avec
les moyens que j'ai pour les cours et je ne vois pas comment faire...


Si vous pourriez me donner un petit coup de main ? Merci
Commenter la réponse de Glaudiuus
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7
0
Merci
Bonjour,

Pour le min et max, il n'y a pas d'autres moyens que de passer toutes les valeurs en revue... Mais en géénrale on se débrouille pour faire cette opération en même temps qu'on passe en revue les valeurs pour autre chose...

En gros cela donne un truc du genre :

Sub ess()
Dim tabl(100)



'Création tableau de valeurs aléatoires
For t = 1 To 100
    tabl(t) = Int(Rnd * 100)
Next t



'Valeur max et min
Mini = 102
Maxi = 0
For t = 1 To 100
If Maxi < tabl(t) Then Maxi = tabl(t)
If Mini > tabl(t) Then Mini = tabl(t)
Next t



MsgBox "Le maxi :" & Maxi & vbCrLf & "Mini :" & Mini



End Sub





Pour le tri, il faut utiliser Qsort, c'est le seul vraiment rapide :
Voici son code de base à modifier en fonction de tes bessoins :

Sub QSort(t() As Long, Deb As Long, Fin As Long)
'TRI QUICKSORT RECURSSIF (TRI RAPIDE)
'Source : Livre QBASIC de Micro Application



'Déclaration des variables
Dim i As Long         'indice
Dim j As Long         'indice
Dim X As Long         'valeur pivot
Dim Temp As Long      'Valeur temporaire



'Algo Tri
i = Deb 'sauve le début
j = Fin 'sauve la fin
X = t((i + j) \ 2)  'valeur pivot



Do



Do While t(i) < X: i = i + 1: Loop 'recherche par la bas
Do While t(j) > X: j = j - 1: Loop 'recherche par le haut



If i <= j Then
    Temp = t(i)     'inversion t(i) et t(j)
    t(i) = t(j)
    t(j) = Temp
    i = i + 1       'Passe au suivant
    j = j - 1
End If



Loop Until i > j



If j > Deb Then QSort t(), Deb, j   'trie par le bas
If i < Fin Then QSort t(), i, Fin   'trie par le haut



End Sub

Amicalement,
Us.
Commenter la réponse de us_30
Messages postés
7
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
16 février 2007
0
Merci
Merci beaucoup pour ton aide !
Commenter la réponse de Glaudiuus