begin process at 2010 02 10 03:41:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Algorithme

 > 

Maths

 > 

fonction random


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fonction random

vendredi 17 avril 2009 à 02:21:37 | fonction random

fayrous

bsr
pouvez vous me dire est ce que on peut utiliser la fonction randomize en c#
j'ai utiliser la fonction random mais les valeurs aléatoires prise par random se répéte.comment puisse je les éviter.
merci
vendredi 17 avril 2009 à 07:33:24 | Re : fonction random

SharpMao

Membre Club
Hello,

Je pense que tu fais quelque chose comme ça :

for(...)
{
   Random r = new Random();
   //utilisation de r
}


Dans ce cas, c'est normal que tes valeurs se répètent.

Il faut savoir qu'il n'y a pas de nombres réellement aléatoires avec la classe Random, mais seulement des nombres pseudo-aléatoires.
La différence, c'est que quand tu crées un de ces objets, tu peux lui donner une graine (seed).
Si tu donne toujours la même graine, la suite de nombre sera toujours la même.

Maintenant, si tu ne lui donnes pas cette graine, il va en créer une à partir du nombre de millisecondes écoulées depuis le démarrage de l'ordinateur.
Si ta boucle est courte, il va donc prendre plusieurs fois le même nombre, et par donc te donner plusieurs fois les même valeurs.

Il faut donc faire comme ça :


Random r = new Random();
for(...)
{
   //utilisation de r
}


Voir même déclarer r comme un membre privé (éventuellement static) de la classe.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
vendredi 17 avril 2009 à 09:05:58 | Re : fonction random

fayrous

Bonjour;
je ne comprends pas le sens du mot graine.
j'ai une fonction qui me rend une tableau.je voudrai que à chaque appelle de  cette fonction le résultat soit différent.
  private string permutation()
        {
          
            string x="";
        int h=0;
            int j = 2;
            Random rnd = new Random();
        
            for (int i = 1; i <= Convert.ToInt32(textBox1.Text); i++)
                tab0[i] = i;
        
                var = rnd.Next(2, Convert.ToInt32(textBox1.Text));
      
            tab1[1] = var;
            
            for (int k=1; k<=Convert.ToInt32(textBox1.Text); k++)
            {
                if (tab0[k] != var && j <=Convert.ToInt32(textBox1.Text))
                {
                    tab1[j] = tab0[k];
                    j++;
                }
              
            }
            for (int i = 1; i <=Convert.ToInt32(textBox1.Text); i++)
                x =x+","+tab1[i];

            return x;
        }

comment je doit faire?
pouvez vous me aidez.
merci d'avance.
vendredi 17 avril 2009 à 09:32:24 | Re : fonction random

SharpMao

Membre Club
Comment est appelée cette fonction, une fois, ou de multiple fois depuis une boucle ?

De plus, quelques petits conseils :

- Les tableaux en C# commence à l'index 0, ici, tu commence toujours à 1, mais peut-être est-ce voulu.
- Plutôt que de mettre plusieurs fois Convert.ToInt32(textBox1.Text), mets cette valeur dans une variable entière.
- Pour la concaténation de chaines de charactères, utilise plutôt un StringBuilder (dans System.Text), c'est plus efficace que x =x+","+tab1[i];

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
vendredi 17 avril 2009 à 09:39:49 | Re : fonction random

fayrous

Rebonjoiur,
ma fonction est appelée une seule fois.
vendredi 17 avril 2009 à 11:23:27 | Re : fonction random

krimog

Salut

Tu dis que cette fonction est appelée une seule fois, et que la valeur est à chaque fois la même ? Est-tu sûr que ce n'est pas une autre partie de ton code qui pose problème ? Car l'utilisation de la classe Random est bien faite dans ton code. Tu devrais essayer de mettre un point d'arrêt à la ligne tab1[1] = var; (en cliquant à gauche de ta ligne (tu verras un point rouge)) et d'exécuter ce code afin de vérifier la valeur de var à chaque fois (en mettant ta souris dessus) au moment du point d'arrêt.

Quant à ce qu'est une graine, voici un exemple très simplifié.
Un nombre aléatoire ça n'existe pas en informatique (ça existera probablement avec les ordinateurs quantiques, mais on n'en est pas là). Donc grosso-modo, un nombre aléatoire, c'est une suite de nombre dans ce genre là :
indice :    10      11      12       13       14        15 ...
valeur :  914     802      3      2168      80     5379 ...

si tu fais new Random(12); tu auras rnd.next() = 3. rnd.next() = 2168. rnd.next() = 80. Et ce à chaque fois que tu éxécuteras le code. 12 est ta graine dans cet exemple.
Si, en revanche, tu fais new Random(); il prend une graine qui dépend du nombre de millisecondes écoulées depuis le démarrage de l'ordi ou du prog, je sais plus. Donc c'est à peu près sûr que ce ne sera JAMAIS le même nombre, et donc qu'il commencera la suite à un endroit complètement différent.

Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -


Cette discussion est classée dans : fonction, utiliser, random


Répondre à ce message

Sujets en rapport avec ce message

Utiliser la fonction "pack" PHP en C# [ par carlitto65 ] Bonjour tout le monde...Je dois récupérer en C# des valeurs mises en base de données sous BLOB...Jusque là ça va, le problème c'est que les-dits BLOB GDI [ par zarmin ] salut, J'ai besoin d'utiliser une fonction de la lib GDI. D'après ce que j'ai compris de base Windows utilise cette librairie pour dessiner les fene Comment utiliser une même fonction c# dans différentes pages aspx [ par ludo27600 ] bonjour,je souhaite utiliser une même fonction c# dans différents fichier aspx.Comment peut-on faire ? (ou comment faire l'équivalent d'un #Include c+ Utiliser une fonction d 'une DLL [ par demich_g ] Bonjour,J'ai besoin de votre savoir:J'aimerais utiliser une fonction d'une DLL. J'ai référencé la DLL (vbPCapLib.dll) dans mon projet et le problème s Sql server [ par emmanuel9 ] Bonjour j'ai une fonction qui ecris differents objets dans la base : void fonction(sqlconnection){    Ecrire_Personne(sqlconnection)    Ecrire_Groupe( Importation de la fonction fopen du c vers le C# [ par vincentbo ] Bonjour,Je suis en train de développer un loarder MD2 en C# et je voudais utiliser la fonction fopen native au c et c++.Habituellement pour imorter un utiliser une fonction d'une autre form [ par BOUDDINE ] Bonjour SVP comment on peut utiliser une fonction declarer dans une autre form merci beaucoup débutant comment utiliser codes source [ par fredericadjadj ] en cherchant un moyen de fusionner des fichiers excel je suis tombé sur ces codes sources. Ok ok j'en fait quoi maintenant??MERCI [C# .NET V1] DataGrid [ par toto9o59 ] Bon voilà mon probléme reste assez simple mais depuis lomgtemps sans réponse ! Dans un programmeur d'applications windows lié Transparence UC [ par Equinox84 ] Bonjour ! Je suis contraint d'utiliser un userControl parce que mon appli doit fonctionner sous IE, mais du  coup je suis obliger d'utiliser d'autre u


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,203 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales