0
votes

Comment puis-je générer des variables aléatoires selon des types de données?

J'ai des bases de données et des tables. J'essaie de détecter des types de données de chaque colonne et de créer des variables aléatoires selon le type de données?


Par exemple: P>

if(datatype.Equals("int"))
   random.Next();
else if(datatype.Equals("string"))
   ...


4 commentaires

J'utilise MSSQL.


En outre, quelle est votre définition de "aléatoire"? Peut-être que pour l'intégration, cela pourrait être "évident" (par exemple une distribution uniforme sur toutes les valeurs possibles), mais pour une chaîne, vous voudrez peut-être restreindre et définir un peu plus. Si vous déterminez d'abord une longueur aléatoire, puis des caractères aléatoires? Quels caractères aléatoires, vous limitez-vous aux lettres? à tous les caractères Unicode? GUID?


J'ai fait une recherche et je suppose que j'ai besoin de déterminer des personnages et de la longueur. C'est juste. Mais j'essaie juste de comprendre, existe-t-il un moyen facile de le faire. La solution doit fonctionner pour la chaîne, l'INT, le bit, la dateTime, etc. Si non, je suppose que je dois créer mes propres algorithmes un par un pour tous les types de données.


Il n'y a pas de moyen général de faire cela. Bien que vous puissiez générer de manière évidente des motifs de bits aléatoires, puis les réinterpréter comme une instance de type (bien que cela ne soit pas facile à faire dans .NET!) Tous les modèles de bits sont valables pour tous les types. Cela seul est un argument suffisant pour montrer pourquoi vous avez besoin d'un boîtier spécial, mis à part tous les autres problèmes évidents avec des données entièrement aléatoires (à savoir que cela ne sera pas représentatif des données réelles que votre application traitera). Il existe différentes solutions tierces pour générer des données factices, mais ce commentaire est trop étroit pour les contenir.


3 Réponses :


0
votes

Il n'y a pas de "type de données SQL Server -> Type de données .NET" Table de mappage intégré; Ainsi, vous devrez vous mapper vous-même.

Vous pouvez vérifier SQL Server à .NET Type Conversions


0 commentaires

0
votes

La classe aléatoire fournit aléatoire.next () code>, aléatoire.nextbytes () code> et aléatoire.nextDouble () code> méthodes. La méthode aléatoire.next () renvoie un nombre aléatoire, aléatoire.nextbytes () code> renvoie un tableau d'octets remplis de nombres aléatoires et aléatoire.nextDouble () code> retourne un hasard Nombre compris entre 0,0 et 1,0.

la méthode aléatoire.next () comporte trois formes surchargées et vous permet de définir la plage minimale et maximale du nombre aléatoire. p>

Le code suivant renvoie un nombre aléatoire. p> xxx pré>

Le code suivant renvoie un nombre aléatoire inférieur à 1000. p> xxx pré>

Le code suivant renvoie un nombre aléatoire entre le min et la plage maximale. Pour générer un nombre aléatoire entre deux chiffres P>

// Generate a random string with a given size  
public string RandomString(int size, bool lowerCase)  
{  
    StringBuilder builder = new StringBuilder();  
    Random random = new Random();  
    char ch;  
    for (int i = 0; i < size; i++)  
    {  
        ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));  
        builder.Append(ch);  
    }  
    if (lowerCase)  
        return builder.ToString().ToLower();  
    return builder.ToString();  
}


1 commentaires

Faire aléatoire aléatoire = nouveau aléatoire (); sur chaque appel de méthode est horrible, car si vous appelez la méthode de succession rapide, vous obtiendrez le même résultat "aléatoire". Utilisez une instance statique (thread) de aléatoire déclarée quelque part en dehors des méthodes pour contourner ce problème. Voir aussi réflexions sur aléatoire de Jon Skeet et Eric Lippert .



2
votes

Voici une approche: xxx

alors vous pouvez faire cela: xxx

i get eyqqedmdtsr8ny8ks73hg == À titre d'exemple de sortie.

Il vous suffit de continuer à construire tous les types dont vous avez besoin.


0 commentaires