Je veux générer un tableau qui a 144 nombre de 1-> 36 dans un ordre aléatoire (donc chaque nombre est répété 4 fois). Pouvons-nous utiliser Enumerable.Repeat et Enumerable.Range pour le faire. Si oui, merci de m'expliquer comment?Générer et répéter nombre en C#
Répondre
Eh bien, la création de la séquence avec tous les nombres est facile:
var items = from x in Enumerable.Range(1, 36)
from y in Enumerable.Repeat(x, 4)
select y;
Ensuite, vous pouvez simplement utiliser ToArray
pour l'obtenir dans un tableau et mélangez. Il y a de nombreuses questions sur le mélange d'un tableau en C# sur SO, tel que this one. Vous pouvez soit utiliser directement ce code, soit appeler le ToArray
et mélanger le tableau sans le céder à la fin.
int[] numbers = Enumerable.Range(0, 144).Select(i => (i % 36)+1).OrderBy(g => Guid.NewGuid()).ToArray();
Probablement pas important dans ce cas, mais cette façon de mélanger finit par être O (n log n) où il suffit d'être O (n). –
// Generate the list (not in random order)
var one_to_36 = Enumerable.Range(1, 36);
var lst = one_to_36.Concat(one_to_36).Concat(one_to_36).Concat(one_to_36).ToList();
// Randomize the list by swapping random elements
Random rnd = new Random();
for(int i = 0; i < lst.Count; i++)
{
int i1 = rnd.Next(lst.Count);
int i2 = rnd.Next(lst.Count);
int tmp = lst[i1];
lst[i1] = lst[i2];
lst[i2] = tmp;
}
Permuter des éléments aléatoires de cette manière ne donne pas une bonne distribution aléatoire - il y a une meilleure façon de mélanger une collection, comme liée à ma réponse. –
Je ne m'en suis pas rendu compte ... merci pour le pourboire –
var seq = Enumerable.Range(0, 144);
var all = seq.ToList();
var random = new Random();
var result = seq.Select(i => {
var index = random.Next()%all.Count;
var r = all[index] % 36 + 1; all.RemoveAt(index);
return r;
}).ToList();
- 1. Répéter l'image en C#
- 2. Comment générer un nombre aléatoire en C#?
- 3. Nombre de répéter dans le tableau multidimensionnel
- 4. Répéter l'image en position horizontale (C# Dessin)
- 5. Comment répéter un fichier MIDI en C#?
- 6. Générer caractères aléatoires et entiers en C++
- 7. Mysql répéter des nombres incrémentaux?
- 8. Générer les partitions d'un nombre
- 9. générer uniques 5 nombre chiffres
- 10. requête PHP et répéter mysql_fetch_array
- 11. C nombre complexe et printf
- 12. Comment générer un nombre aléatoire entre 75 et 100%?
- 13. Générer un nombre aléatoire avec une longueur de nombre aléatoire dans Objective-C
- 14. Comment générer et consommer du xml en C#?
- 15. générer un seul nombre aléatoire dans une vue en xcode
- 16. Comment générer un nombre de polygones en utilisant métapost?
- 17. Générer sha256 avec OpenSSL et C++
- 18. Répéter requête LINQ
- 19. Générer un nombre naturel de PHP lcg_value()?
- 20. UILocalNotification Répéter
- 21. Générer des fichiers PDF en Objective-C
- 22. Comment générer automatiquement pattern Décorateur en C#
- 23. Générer des valeurs aléatoires en C#
- 24. Générer un document word en C#
- 25. Lib pour générer SiteMap en C#
- 26. Générer le dégradé de couleur en C#
- 27. Comment générer une séquence alpha en C#?
- 28. Comment générer une URL conviviale en C#?
- 29. Générer une énumération aléatoire en C# 2.0
- 30. Générer la texture sur l'image en C#
hey, c'est plus lisible que ma solution. +1 –
et plus élégant que mon concat multiple;) –
merci pour le commentaire, mais maintenant je dois remplir le tableau généré à un tableau [9,16], pouvez-vous suggérer un bon moyen pour moi? –