Aléatoire générateur de nom en c#
J'ai une liste de femmes et d'hommes prénoms, puis une liste de noms dans les tableaux.
Ce que j'essayais de faire, c'était d'utiliser le générateur aléatoire de prendre les noms dans ces tableaux et de sortie aléatoire de nom et de prénom en fonction de ce que j'appelle.
Après avoir fini que j'allais faire référence à cette méthode dans d'autres classes, au lieu de devoir écrire chaque fois.
Voici le code que j'ai pour l'instant:
private void RandName()
{
string[] maleNames = new string[1000] { "aaron", "abdul", "abe", "abel", "abraham", "adam", "adan", "adolfo", "adolph", "adrian"};
string[] femaleNames = new string[1000] { "abby", "abigail", "adele", "adrian"};
string[] lastNames = new string[1000] { "abbott", "acosta", "adams", "adkins", "aguilar"};
Random rand = new Random(DateTime.Now.Second);
if (rand.Next(1, 2) == 1)
{
FirstName = maleNames[rand.Next(0, maleNames.Length - 1)];
}
else
{
FirstName = femaleNames[rand.Next(0, femaleNames.Length - 1)];
}
}
Ma Question est: Comment créer un nom aléatoire du générateur à l'aide des ensembles de noms que j'ai créé?
- Quelle est la question?
- Désolé à ce sujet, comment créer un nom aléatoire du générateur à l'aide des ensembles de noms que j'ai créé.
- Veuillez expliquer pourquoi la sortie que vous obtenez ne pas correspondre à la sortie que vous attendez. J'ai pris un guess ci-dessous, mais il n'est qu'une supposition!
- Cela ne va pas être trop aléatoire si vous appelez la méthode à deux reprises au cours d'une seconde
- Vous pouvez déclarer votre
rand
privée variable statique; si l'utilisateur clique pour faire un nom aléatoire plus rapide que 1 seconde, il va générer le même nom. Aussi, il suffit de le faire sans spécifier manuellement une graine.
Vous devez vous connecter pour publier un commentaire.
Je suppose que le résultat de votre générateur aléatoire est la même à chaque fois..
Si c'est votre problème, vous ne devriez pas créer une variable locale
rand
à chaque fois. Créer à la place un champ.Qch comme:
Random
, la classe n'est pas Thread-Safe, Il serait mieux pour ne pas la rendre statique (Aussi je ne voudrais pas semer avecDateTime.Now.Second
et il suffit d'utiliser le constructeur par défaut qui utiliseEnvironment.TickCount
interne)UnityEngine.Random' does not contain a definition for
Suivant' et aucune méthode d'extensionNext' of type
UnityEngine.Random' a pu être trouvé. Êtes-vous manque une référence d'assembly?System.Random
@SumitPalOk, sans connaître le problème auquel vous êtes confronté, c'est un peu un coup de poignard dans le noir, mais je pense que votre problème est que vous avez déclaré à la taille de la matrice comme
1000
, mais seulement environ 10 valeurs de chacun. Par conséquent, votre tableau est seulement 1% de la pleine, de sorte que vous aurez principalement à obtenir des vide noms.Essayez ce qui suit:
Depuis l'instance aléatoire est créé dans
RandName
vous permettra de créer le même nom lorsque la méthode est appelée très rapide(f.e. dans une boucle). Vous devez utiliser un champ ou passer le hasard comme argument de la méthode.En dehors de cela, vous ne réussirez jamais à la
else
bloc dedepuis le deuxième paramètre de
Aléatoire.Suivant
est la seule limite supérieure et il génère toujours 1. Vous pouvez donc ceci à la place:Je pense que vous devriez jeter un coup d'oeil à AutoPoco.
Un exemple sur la façon de l'utiliser.
Et si vous prenez un regard plus profond dans la documentation que vous trouverez une source de données pour les noms et les prénoms (qui peut être utilisé, d'agrandir ou de le remplacer).
Format des chaînes de caractères comme si...
Ou Pour moi le moyen le plus facile est d'utiliser une Liste. - Je les utiliser pour parcourir en fichiers. Les principales différences sont que vous devez les ajouter un à un à l'aide de la Liste.Ajouter() et il utilise la Liste.Le comte, au lieu de Tableau.Longueur. Liste vous permettent également de modifier les entrées sans avoir à redimensionner le tableau. Dans votre cas, la liste que vous essayez de créer ressemblerait à ceci
puis l'utilisation du Système.IO pour ouvrir des fichiers séparés et de lire chaque ligne dans les trois liste. C'est juste la manière que je le ferais.
Est très simple générateur ..