Les Snippets

Connexion

Récupérer aléatoirement une valeur unique d'un tableau

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 24/03/2007 18:44:29 et initié par PCPT [Liste]
Date de mise à jour : 06/05/2008 00:55:43
Vue : 7682
Catégorie(s) : Chaîne de caractères, Divers
Langages dispo pour ce code :
- VB6, VBA
- C# 1.x, C# 2.x
- Java
- Python
- Javascript
- VB 2005



Langage : VB6 , VBA
Date ajout : 24/03/2007
Posté par PCPT [Liste]
DateMAJ : 06/05/2008
Function GetSingleValue(ByRef aArr() As String, sResult As String) As Boolean
    If UBound(aArr) = Then
'        reste  rien
        GetSingleValue = False
    Else
        GetSingleValue = True
        
'       on  récupère  un index
        Dim Index As Long
        Index = Int((UBound(aArr) * Rnd) + (LBound(aArr) + 1))
'       on récupère  la  valeur
        sResult = aArr(Index)
'        on  écrase la position par la dernière valeur et on supprime la  dernière  position
        aArr(Index) = aArr(UBound(aArr))
        ReDim Preserve aArr(UBound(aArr) - 1)
    End If
End Function

'    EXEMPLE  D'UTILISATION (nécessite un bouton et une textbox)
Option Explicit
Dim aMyArray() As String 'attention, la premier index (0 ici) ne sera pas utilisé
'
'
Private Sub Form_Load()
'   applique le facteur "aléatoire"
    Randomize Timer
    
'   redimension et remplissage du tableau
    Dim As Long
    ReDim aMyArray(To 10)
    For i = LBound(aMyArray) + To UBound(aMyArray)
        aMyArray(i) = "chaîne [" CStr(i) & "]"
    Next i
'   pour le test....
    Text1.Width = 2895
    Text1.Text = vbNullString
End Sub
'
'
Private Sub Command1_Click()
    Dim sRet As String
    If GetSingleValue(aMyArray, sRet) Then
        Text1.Text = sRet
    Else
        Text1.Text = "Toutes les valeurs ont été piochées"
    End If
End Sub

Remarque :
! bien penser à faire le Randomize au lancement de l'appli

! le tableau en paramètre est modifié et sera donc différent après son utilisation. utiliser une copie si besoin de garder l'intégralité des valeurs
Langage : C# 1.x , C# 2.x
Date ajout : 28/03/2007
Posté par Bidou [Liste]
DateMAJ : 28/03/2007
public static bool GetSingleValue(List<string> list, out string value) 
{
   value = null; 
   // Return false if the array is empty
   if (list.Count == 0) return false;
   else
   {
      int lastElementIndex = list.Count - 1; 
      int index = _rand.Next(0, lastElementIndex); 
      value = list[index]; // Return a randomed value
      list[index] = list[lastElementIndex]; // Replace with the last element
      list.RemoveAt(lastElementIndex); // Delete the last element
      return true;
   }
}


Remarque :
_rand est un object de type System.Random
Langage : Java
Date ajout : 01/04/2007
Posté par Ombitious_Developper [Liste]
DateMAJ : 15/05/2007
import java.util.*;
public static String randomize (Vector<String> array) {
    if (array == null || array.isEmpty ())
        return null;
    Random random = new Random ();
    random.setSeed (System.currentTimeMillis ());
    int index = random.nextInt (array.size ());
    return array.get (index);
}

Langage : Python
Date ajout : 05/04/2007
Posté par pacificator [Liste]
import random
def get_random_and_pop(liste):
    if not liste: return -1
    position = random.randrange(len(liste))
    valeur = liste.pop(position)
    return valeur, liste
# exemple
liste = range(50)
valeur, liste = get_random_and_pop(liste)
print valeur
print liste

Langage : Javascript
Date ajout : 05/04/2007
Posté par stfou [Liste]
var tab=[1,2,3,4,5,6,7,8,9,10];
var valeur_extraite=tab[Math.round(Math.random()*tab.length)];
Langage : VB 2005
Date ajout : 15/04/2008
Posté par jrivet [Liste]
Private _rand As New System.Random Public Function GetSingleValue(ByVal list As List(Of String), ByRef value As String) As Boolean    Dim result As Boolean = False    value = String.Empty    If (list.Count > 0) Then        Dim lastIdx As Integer = list.Count - 1        Dim idx = _rand.Next(0, lastIdx)        Value = list(idx) 'retourne une valeur aléatoire        list(idx) = list(lastIdx) 'remplace par le dernier élément        list.RemoveAt (lastIdx) 'efface le dernier élément        result = True    End If    Return result End Function
By Renfield
Remarque :
Simple traduction du code C# de Bidou

Snippets en rapport avec : Unique, Aléatoire, Valeur, Hasard



Codes sources en rapport avec : Unique, Aléatoire, Valeur, Hasard

{Visual Basic, VB6, VB.NET, VB 2005} GÉNÉRATEUR DE CHAINES PSEUDO-ALÉATOIRES
Salut tout le monde. La pitite source que je dépose ici permet de générer une chaine de caractères d...

{Assembleur} [TUTORÉ] LOTO ET NOMBRES PSEUDO-ALÉATOIRES [MASM]
Comme l'apprentissage passe par la démonstration, voici un petit exemple très simple : le LOTO. L...

{Visual Basic, VB6, VB.NET, VB 2005} ETUDE DE FONCTIONS ALÉATOIRES
Ce dossier contient un programme de 5 fonctions aléatoires différentes, un cours sur les fonctions a...

{Visual Basic, VB6, VB.NET, VB 2005} FONCTION VRAIMENT ALÉATOIRE
Comme vous le savez la fonction Random que propose Visual Basic n'est pas réellement aléatoire, c'es...

{PHP} UNE IMAGE AU HASARD PARMI TOUTES LES IMAGES D'UN RÉPERTOIRES PHP/JAVASCRIPT
se code explore le dossier choisie (dossier comtenant les images) puit dresse une listes des fichier...

{C# / C#.NET} HASARD
Voila ici 4 fonction de hasard: > Harsard.Random( int valeur ); >> Choisis un nombe au hasard ent...

{Visual Basic, VB6, VB.NET, VB 2005} DESORDONNEUR - BORDÉLISER UN TABLEAU
Un petit module pour faire le contraire d'un tri avec dans le zip un exemple d'utilisation. Les bon...

{Visual Basic, VB6, VB.NET, VB 2005} FAIRE FAIRE QQUECHOSE AU HASARD AU PROG.
ben c simple faut faire correspondre une action a un nombre. ...

{JAVA / J2EE} INSTANCE UNIQUE D'UN PROGRAMME (SANS SOCKET NI FICHIER)
Salut à tous, voici l'idée : une classe nommée essaie de renommer le jar en app_tmp.jar, si ...

{Python} JEU DU CHIFFRE PYTHON
Bonjour, C'est un jeu très simple mais amusant en Python où l'on doit deviner un chiffre que l'or...