Generation aleatoire de nombre non repetés
Résolu/Fermé
SuPr3M
SuPr3M
- Messages postés
- 22
- Date d'inscription
- mercredi 22 octobre 2008
- Statut
- Membre
- Dernière intervention
- 5 mai 2010
SuPr3M
- Messages postés
- 22
- Date d'inscription
- mercredi 22 octobre 2008
- Statut
- Membre
- Dernière intervention
- 5 mai 2010
A voir également:
- Generation aleatoire de nombre non repetés
- Generation aleatoire de nombre non repetés ✓ - Forum - Programmation
- Générer aléatoirement un nombre d'une liste précise. ✓ - Forum - Java
- Ne pas générer deux mêmes nombres aléatoires à la suite ✓ - Forum - C
- Générer les mêmes nombres aleatoires enMatlab ✓ - Forum - Matlab
- [c] génération uniforme de nombres aléatoires ✓ - Forum - C
7 réponses
fiddy
29 déc. 2009 à 19:06
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
29 déc. 2009 à 19:06
Non pas comme ça, car là tu récupères pas l'indice dans une case mémoire.
Tu dois te baser sur l'échange de deux cases d'un tableau.
Je t'ai fait un petit code :
Si tu comprends pas des choses, n'hésite pas.
Tu dois te baser sur l'échange de deux cases d'un tableau.
Je t'ai fait un petit code :
#include <stdio.h> #include <time.h> #include <stdlib.h> #define MAX 32 void init(int *tab, const int n) { int i; for(i=0;i<n;i++) tab[i]=i+1; } void affich(const int *const tab, const int n) { int i; printf("T:"); fflush(stdout); for(i=0;i<n;i++) { printf(" %d",tab[i]); fflush(stdout); } putchar('\n'); } void mix(int *tab, const int n) { int i; for(i=0;i<n/2;i++) { int i=(int)((double)rand()/RAND_MAX*n); int j=(int)((double)rand()/RAND_MAX*n); int tmp=tab[i]; tab[i]=tab[j]; tab[j]=tmp; } } int main(void) { int tab[MAX]; srand(time(NULL)); init(tab,MAX); affich(tab,MAX); mix(tab,MAX); affich(tab,MAX); getchar(); return 0; }
Si tu comprends pas des choses, n'hésite pas.
fiddy
29 déc. 2009 à 18:05
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
29 déc. 2009 à 18:05
Salut,
Si tu souhaites utiliser des nombres de 0 à 31 (ou 1 à 32), tu initialises le tableau bêtement. Et tu le mélanges. Pour le mélanger, tu tires deux nombres pseudo-aléatoirement avec rand (et l'utilisation de srand avec son seed), et tu échanges les deux cases correspondantes aux indices.
Si tu souhaites utiliser des nombres de 0 à 31 (ou 1 à 32), tu initialises le tableau bêtement. Et tu le mélanges. Pour le mélanger, tu tires deux nombres pseudo-aléatoirement avec rand (et l'utilisation de srand avec son seed), et tu échanges les deux cases correspondantes aux indices.
michel_m
29 déc. 2009 à 18:05
- Messages postés
- 16569
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 23 mai 2022
29 déc. 2009 à 18:05
Et le tout avec quel langage...
SuPr3M
29 déc. 2009 à 18:27
- Messages postés
- 22
- Date d'inscription
- mercredi 22 octobre 2008
- Statut
- Membre
- Dernière intervention
- 5 mai 2010
29 déc. 2009 à 18:27
@ michel_m
je travaille en C...
@ fiddy
Voici un tableau initialisé pourrais tu m'aider a le melanger stp.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
int main()
{
int T[32],
srand(time(NULL));
for(i=0;i<31;i++)
T[i]=i+1;
}
je travaille en C...
@ fiddy
Voici un tableau initialisé pourrais tu m'aider a le melanger stp.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
int main()
{
int T[32],
srand(time(NULL));
for(i=0;i<31;i++)
T[i]=i+1;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
29 déc. 2009 à 18:30
- Messages postés
- 16569
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 23 mai 2022
29 déc. 2009 à 18:30
Désolé, je ne connais pas C
SuPr3M
29 déc. 2009 à 18:36
- Messages postés
- 22
- Date d'inscription
- mercredi 22 octobre 2008
- Statut
- Membre
- Dernière intervention
- 5 mai 2010
29 déc. 2009 à 18:36
Comment pourraint on melanger un tableau ?
Ta[i]=Tb[rand()%i+1] ?
Ta[i]=Tb[rand()%i+1] ?
SuPr3M
7 janv. 2010 à 23:28
- Messages postés
- 22
- Date d'inscription
- mercredi 22 octobre 2008
- Statut
- Membre
- Dernière intervention
- 5 mai 2010
7 janv. 2010 à 23:28
j'ai compris merci :)