bonjours
j'essaye de crée un tableau de nombre tirer aléatoirement entre deux valeur et cela sans redondance
car j'ai un tableau de 25 valeur, et je voudrais tirer aléatoirement les 5 premières valeurs , puis les valeur entre [5;10[ ect... jusqu'au 5 dernières valeurs
pour cela j'ai ce code qui crée des tableau de valeur aléatoire entre deux variable et cela sans redondance. Mon soucis est que je ne sais pas comment l'adapter pour qu'il puisse me servir a retourner le tableau de valeur aléatoire pour m en servir dans une phrase du genre

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
int tab[12]= { 1,2,3,4,5,6,7,8,9,10,11,22};
int test[5];
 
    test= TablAlea(0,4);
    cout<<tab[test]<<endl;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int randomNoDouble(int min, int max, long *tableau, long sizeTableau, int i);
int random(const int MIN, const int MAX);
 
int TablAlea(int i; int j)
{
        srand(time(NULL));
        long size = 5;
        long *tab = NULL;
        int min = i, max = j;
 
        tab = new long[size];
        for (int i=0;i<5;i++) {
                tab[i] = -1;
// j'initialise les valeurs de ton tableau à des valeurs qu'il ne devrait pas contenir
        }
 
        for(int i = 0 ; i < 5 ; i++)
        {
                cout<<randomNoDouble(min,max,tab,size,i)<<endl;
        }
 
        delete[] tab;
 
        return 0;
}
 
int randomNoDouble(int min, int max, long *tableau, long sizeTableau, int i)
{
        bool ok;
 
        do // plus pratique parce qu'on test au moins une fois
        {
                tableau[i] = random(min,max);
                ok = false;
                if(i>0)
                {
// condition de sortie : tant qu'il es tdifférent de -1 parce que ça sert à rien de tester plus loin
                        for(int j=0; j<sizeTableau && tableau[j] != -1;j++)
                        {
// Si tu dis pas que j est différent de i alors tu tourneras en rond pendant des heures
// Il testera la même valeur en permanence.
                                if(i != j && tableau[i] == tableau[j])
                                {
// on continue la boucle si on trouve 2 valeurs identiques.
                                        ok = true;                                }
                        }
                }
        }while(ok);
 
        return tableau[i];
}
 
int random(const int MIN, const int MAX)
{
        int random;
        return random = (rand() % (MAX - MIN + 1)) + MIN;
}