0
votes

Comment randomiser une place dans la matrice

J'essaie de coder le jeu Minesweeper et que j'ai besoin de randomiser les emplacements des bombes.

Peut-on aider à modifier un peu la fonction afin que la placement de bombes soit randomisée?

Le Code: xxx


2 commentaires

Rand ()% Taille Vous donne un numéro "aléatoire" dans la plage 0 jusqu'à Taille-1 inclusif.


@mch Pas vraiment, au moins si vous utilisez les valeurs générées pour quelque chose d'important. Si rand_max n'est pas divisible par Taille Il y aura une fausseté vers les valeurs inférieures. Et plus important encore, de nombreux PRN ont un caractère aléatoire très faible dans les bits d'ordre faible. Voir Les entiers aléatoires en C, quelle est la mauvaise rand ()% N comparé à l'arithmétique entier? Quels sont ses défauts?


3 Réponses :


0
votes

Supposons que le nombre de bombes que vous avez besoin est 5. Aussi, permettez également à initialement carte contenant la valeur par défaut de 1 pour toutes les cellules, et 9 uniquement s'il y a une bombe présente dans la cellule. Ensuite, vous pouvez faire quelque chose comme: xxx

Notez que les chiffres générés par rand ne sont pas vraiment aléatoires et dépendent de la graine initiale. La graine est fournie par srand . Utilisation de Time pour la graine est une bonne option pour aléater.


2 commentaires

srand (heure (0)); pour chaque appelle à la fonction?!?!?!?!?


Étant donné que la fonction est appelée une fois pour peupler les bombes, je pense que cela devrait être bon d'aller. : /



0
votes

Ne pas utiliser le module pour obtenir un nombre pseudo-aléatoire, car avec quelques essais, nous pouvons facilement comprendre ce qui va être le prochain numéro. Il y a plusieurs façons de randomiser dans un bon sens, c'est une façon, c'est mieux que l'utilisation du module: (Si vous avez des intérêts, il existe des moyens plus complexes de générer des nombres aléatoires) xxx pré>

rand_max est une valeur constante définie dans stdlib.h, à peine, il est une énorme constante entier, c'est-à-dire un Big Integer Number. P>

Donc, dans votre programme, il vous suffit d'appeler: P>

int x = random_num(0, size); /*Gets a new random number in the desired range*/ 


0 commentaires

0
votes

J'ai écrit une pince à base de NCurses il y a longtemps (vers 1993). C'est OpenSource et c'est maintenant à GitHub, si vous voulez des conseils sur la manière de la mettre en oeuvre, vous avez un code source complet Il . Vous êtes libre de télécharger, clone, et même de me montrer de meilleures façons de mettre en œuvre quelque chose si vous en obtenez.

Mon approche consistait à utiliser une matrice pour les cellules de terrain et à stocker sur eux le nombre de bombes voisines, tandis qu'un bit stocké la présence d'une bombe. J'ai bien craint qu'il ait été écrit il y a si longtemps que je n'ai pas eu le temps de traduire tous les commentaires et identificateurs en anglais ... mais c'est probablement un bon moment pour le faire .... pensons-y.


0 commentaires