Générer des nombres toujours aléatoire

Résolu
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 - 1 janv. 2013 à 18:54
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 4 janv. 2013 à 11:42
Bonsoir,

Je coince sur ce code, je ne comprends pas pourquoi c'est toujours les mêmes nombres
qui sortes alors que tous se passe bien dans ma fonction à première vue
Module Module1

    Function Random(ByVal Minimum As Single, ByVal Maximum As Single) As Single

        Dim TableauNombreAleatoire As New LinkedList(Of Single)
        Dim Aléatoire As New Random
        Dim NombreAleatoire As Single = 0
        Dim Difference As Integer = 0
        Dim Interupteur As Integer = 0

        For Nombre As Integer = Minimum To Maximum - 1 Step 1
            Difference += 1
        Next

        ' Remplissage de la liste de nombre aléatoire
        For Remplissage As Integer = 1 To Difference

            Do
                NombreAleatoire = Aléatoire.NextDouble() * Maximum + Minimum
            Loop Until NombreAleatoire >= Minimum And NombreAleatoire <= Maximum

            Interupteur = Aléatoire.NextDouble()

            If Interupteur = 0 Then
                NombreAleatoire += -NombreAleatoire - NombreAleatoire
            End If

            TableauNombreAleatoire.AddLast(NombreAleatoire)

        Next

        Return TableauNombreAleatoire(Aléatoire.NextDouble() * Difference)

    End Function

    Sub Main()

        For Aléatoire As Integer = 1 To 25
            Console.WriteLine("Le nombre aléatoire est = à: " & Random(-10, 10))
        Next

        Console.ReadLine()

    End Sub

End Module


De plus, je ne comprends même pas le système du random:
NombreAleatoire = Aléatoire.NextDouble() * Maximum + Minimum

Pour moi, ça devrais renvoyer un nombre entre 0 et 1 vue que la fonction retourne un nombre aléatoire entre 0.0 et 1.0 si j'ai bien suivis
Donc met-on que ça retourne 1, 1 * Maximum (qui est à 10) 10 + Minimum (qui est à = -10) = 0 car 10 + -10 = 0, le totale est donc 1
met-on que ça retourne 0, 0 * Maximum (qui est à 10) 0 + Minimum (qui est à = -10) = 0 car 0 + -10 = -10, le totale est donc -10

Au faite: je cherche à générer des nombre vraiment aléatoire, je veux dire que jamais les même séquence de nombre serais pareil
c'est pour ça que je crée une liste que je remplie de nombre aléatoire entre X et X puis que je choisie dans cette même liste
un élément aléatoirement pour en fin de compte crée ce fameux nombre aléatoire !

Je ne sais pas si je m'y prends bien, d'ailleurs je pense que non
La fonction Random retourne t-elle des nombre vraiment 100% aléatoire, car j'ai crue comprendre que non justement !

Bref, j'y comprends plus rien moi
Mes excuses d’avance pour ce bazar !
A voir également:

60 réponses

cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 14:12
Salut,

Lol

En faite, ça dépend car si c'est pour un jeu de dés vois-tu, il faut quand même des doublon voir plus
En faite, tout est question de...

Bon bref, moi je continue et espère vous lâcher les bas quettes avec ça au plus vite
A++ et merci encore !
0
Utilisateur anonyme
3 janv. 2013 à 14:14
espère vous lâcher les bas quettes avec ça au plus vite

Tant que tu n'auras pas validé ce sujet, on continuera encore et encore...
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 14:27
Oui je sais banana32 mais je veux pas m’attirer les foudre des gents d'ici donc j'y vais molo
Je peut être maladroit et chiant des fois alors je fais attention à se que je fais (enfin j’essaie en tous qu'a) !
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 14:37
Bon...

Ceci m'as l'air de marcher:
Option Strict On

Module Module1

    Sub Main()

        Dim Rand As New Random
        Dim Aléatoire As Single = 0
        Dim MaListe As New List(Of Single)
        Dim Minimum As Single = -10
        Dim Maximum As Single = 10

        For i = 1 To 8

            MaListe.Clear()

            For x = 0 To Rand.Next(100)
                MaListe.Add(Rand.Next(CInt(Minimum), CInt(Maximum)))
            Next

            Aléatoire = Rand.Next(0, MaListe.Count)

            Console.WriteLine("MaListe contient " & MaListe.Count.ToString & " éléments")
            Console.WriteLine("Je choisis maintenant le " & Aléatoire & " ème élément qui est: " & MaListe(CInt(Aléatoire)).ToString)
            Console.WriteLine("")

        Next

        Console.ReadLine()

    End Sub
End Module

Est-ce une bonne méthode et y à t-il moyen de faire mieux, ceci sert t-il au final à quelque choses ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 18:59
Ou ceci:
Module Module1

    Dim Aléatoire As New Random

    Function Random(ByVal Minimum As Single, ByVal Maximum As Single) As Single

        Dim TableauNombreAleatoire As New LinkedList(Of Single)
        Dim NombreAleatoire As Single = 0
        Dim Difference As Integer = 0
        Dim Interupteur As Integer = 0

        For Nombre As Integer = Minimum To Maximum - 1 Step 1
            Difference += 1
        Next

        ' Remplissage de la liste de nombre aléatoire
        For Remplissage As Integer = 1 To Difference * 2

            Do
                NombreAleatoire = Aléatoire.NextDouble() * Maximum + Minimum
            Loop Until NombreAleatoire >= Minimum And NombreAleatoire <= Maximum

            Interupteur = Aléatoire.NextDouble()

            If Interupteur = 0 Then
                NombreAleatoire += -NombreAleatoire - NombreAleatoire
            End If

            TableauNombreAleatoire.AddLast(NombreAleatoire)

        Next

        Return TableauNombreAleatoire(Aléatoire.NextDouble() * Difference)

    End Function

    Sub Main()

        For Aléatoire As Integer = 1 To 25
            Console.WriteLine("Le nombre aléatoire est = à: " & Random(-10, 10))
        Next

        Console.ReadLine()

    End Sub

End Module
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 19:00
Je vais faire autrement encore !
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 19:02
Ya ça:
odule Module1

    Dim Random As New Random
    Dim NombreAleatoire As Integer = 0
    Dim Variation As Integer = 0
    Dim Minimum As Integer = -50
    Dim Maximum As Integer = 50
    Dim Temps As Integer = 0

    Sub Main()

        For i As Integer = 1 To 24

            Temps = Random.NextDouble() * (Random.NextDouble() * (Random.NextDouble() * 4)) + 1

            For Passage As Integer = 0 To Temps
                Do
                    NombreAleatoire = Random.NextDouble() * Maximum + Minimum
                Loop Until NombreAleatoire >= Minimum And NombreAleatoire <= Maximum
            Next

            Temps = Random.NextDouble()

            If Temps = 0 Then
                NombreAleatoire += -NombreAleatoire - NombreAleatoire
            End If

            Console.WriteLine(NombreAleatoire)
        Next

        Console.ReadLine()

    End Sub

End Module
0
Utilisateur anonyme
3 janv. 2013 à 19:06
ceci sert t-il au final à quelque choses ?

Mais que veux tu faire en fin de compte ?
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
3 janv. 2013 à 19:27
...

Tu sais "1 to 24", qu'à la main tu aurais déjà fini en faisant ça avec 3 dés...
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 20:04
Mais que veux tu faire en fin de compte ?

Des nombre vraiment aléatoire mais je m'y prends mal, alors je poste mes codes fini comme ça
si sa peut servir ou aider d'autres, et pis, ça permet de voir mes évolution mais je rabâche
Je n'oublie pas de mettre résolue des que se serra clair dans ma petite tête
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
3 janv. 2013 à 21:16
Bonjour
Je n'oublie pas de mettre résolue des que se serra clair dans ma petite tête




et comment vas tu savoir ?
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 21:32
Mince j'ai appuyer malencontreusement sur le bouton "Réponse acceptée"
Désoler mais ya rien de régler !
Enfin grâce à vous j'ai compris comment ça marche
Pi ont peut pas annuler alors
Alors merci à tous et voilà comme ça pas de jaloux
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 21:34
Voilà, bon pour commencer ya ça:
Module Module1

    ' Objet de génération de nombre aléatoire
    Dim GénérateurNombreAléatoire As New Random

    Function Random(ByVal Minimum As Single, ByVal Maximum As Single) As Single
        Return GénérateurNombreAléatoire.Next(CInt(Minimum), CInt(Maximum))
    End Function

    Sub Main()

        For i = 1 To 5
            Console.Write(Random(1, 6))
        Next
           
        Console.ReadLine()

    End Sub

End Module
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 21:35
Donc c'est régler en faite
Merci !
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
3 janv. 2013 à 22:12
Voilà donc merci à vous tous pour m'avoir aider dans cette périlleuse expérience
Sujet terminer.
0
Utilisateur anonyme
3 janv. 2013 à 23:37
Et voici la petite astuce du jour tant attendue

Une règle simple pour savoir si on doit mettre é ou er à la fin d'un verbe est de le remplacer par le verbe "vendre" dans la phrase. Si l'on dit "vendu", il faut mettre é, sinon il faut mettre "er".
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
4 janv. 2013 à 11:22
Merci bien Banana32, je vais essayer (On peut dire vendre donc "er") de m'en souvenir à (On ne peut pas dire "avais" donc ont met "à") l'avenir, c'est toujours utile de s'améliorer (On peut dire vendre donc "er") en orthographe car cella (On peut dire "Ceci" donc on met "Cella") nous rend plus crédible aux yeux des autres personnes.

Je sais, je suis pas très fort en orthographe mais pourtant, croyez-moi, j'ai fais pas mal d’effort déjà
et avec un éditeur d'orthographe intégrer à Firefox, c'est encore bien mieux
Salut !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 janv. 2013 à 11:28
et avec un éditeur d'orthographe intégrer à Firefox, c'est encore bien mieux

Tu veux peut-être parler d'un vérificateur ou d'un correcteur !
Aucun de ces outils ne sera toutefois capable d'aller bien ... loin ... en matière de vérification de la syntaxe

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_dayvid Messages postés 212 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 12 février 2013 1
4 janv. 2013 à 11:39
Oui c'est bien ça ucfoutu
Word est un peut mieux mais payent !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 janv. 2013 à 11:42
Ouais ? Mais "peut", qui vient du verbe pouvoir, n'est par l'inverse de beaucoup


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous