Ce programme C# est supposé être un programme de blackjack mais je dois « SHUFFLE » la carte et afficher uniquement la « MAIN »C# Blackjack - Besoin d'aide
Le reste, je pense que je peux gérer ... quelqu'un peut-il Aidez moi?
Ce programme C# est supposé être un programme de blackjack mais je dois « SHUFFLE » la carte et afficher uniquement la « MAIN »C# Blackjack - Besoin d'aide
Le reste, je pense que je peux gérer ... quelqu'un peut-il Aidez moi?
Je pense qu'il a déjà été couvert here.
Vous auriez dû ajouter un commentaire plutôt qu'une réponse. – ChrisF
@ChrisF: Je serais d'accord pour dire que cela ressemble plus à un commentaire, mais connaissez-vous des lignes directrices réelles quant à ce qui fait un commentaire plutôt qu'une réponse? J'ai essayé de le chercher sur Meta mais je n'ai rien trouvé de convenable. – Patrick
@Patrick - peut-être nous avons besoin de quelques-uns à aller avec la question demandant des directives (qui est le lien m'échappe maintenant) – ChrisF
Une façon de mélanger est de créer un nouveau tableau et déplacer les cartes dans ce tableau dans un ordre aléatoire
List<Card> unshuffled = new List<Card>(pack);
pack = new Card[NUM_CARDS];
Random r = new Random()
for(int card = 0; card < NUM_CARDS; card++)
{
pack[card] = unshuffled[r.Next(0, unshuffled.Count -1)];
unshuffled.remove(pack[card]);
}
Vous voudrez peut-être faire l'instance mondiale, Random
que la création d'une nouvelle chaque fois aléatoire réduit l'entropie quelque peu. Cela peut ne pas être important si vous ne mélangez pas beaucoup.
Merci beaucoup .. cela va aider: D cela fonctionne – Sydney
Je recommande commutant chaque élément à un autre hasard, Heres comment:
private void switchElements(Card[] pack, int nr_1, int nr_2) {
Card temp = pack[nr_1];
pack[nr_1] = pack[nr_2];
pack[nr_2] = temp;
}
public void shuffle(Card[] pack) {
for (int i = pack.length - 1; i > 0; i--)
switchElements(pack, i,random.Next(0,i));
}
Um, ne serait-ce pas garantir que la dernière carte en pack [] avant d'appeler shuffle ne peut pas être la dernière carte en pack [] après shuffle? –
Ceci est aussi simple que: choisissez une carte aléatoire et placez-la sur le pont 2, jusqu'à ce que vous ayez fait cela pour toutes les cartes du deck 1. Seule différence: il n'y a pas de deck 2, les cartes sont stockées sur le deck 1 C'est également ainsi que fonctionne Java ** Collections.shuffle() **. – Margus
Vous pouvez « shuffle » un paquet avec quelque chose d'aussi simple que:
var shuffled = pack.OrderBy(c => random.NextDouble());
Cela pourrait-il provoquer une boucle infinie? Cela dépend du type de tri que LINQ utilise ici. – Bryan
Non, cela ne provoquera pas une boucle infinie - ce n'est certainement pas une solution optimale non plus, mais étant donné le niveau des devoirs assignés (bien que la source originale semble avoir été supprimée), il aurait été simple à implémenter Fisher-Yates –
Sons comme quelqu'un triche sur sa tâche de programmation.Je suis sûr que vous allez grandir pour devenir un millionnaire de toute façon ... – danijels
Si ce sont des devoirs, pouvons-nous retag en tant que tel? – jcolebrand
'public static int' demande des problèmes. Soit public static readonly int ou public public int. Les constats sont statiques par défaut. –