60

Kevin Kofler a écrit :
La solution de bobti89 m'a l'air correcte et optimale, à condition de mettre 41 et pas 9*9/2==40 dans le random.
Je dirais même qu'elle est correcte et optimale ...
J'ai écrit :
[...] l'algorithme de bobti89 marchera du premier coup ... à un petit détail près.
Comme on a a = 2 * rand ( 40 ) ;, la toute dernière case, dans le coin x=y=8 (soit a == 80), ne sera jamais choisie.
Il faut donc a = 2 * rand ( 41 ) ; ...
Plus exactement, dans la parenthèse du rand, il faut arrondir à la valeur entière supérieure le résultat (Xmax * Ymax / 2) (ça existe, ceil, en C ?).
Et de manière toute aussi générale, je préciserai que la valeur 9 utilisée pour le calcul de x et y correspond en fait à Xmax (Ymax n'intervient que dans le calcul de a).

Ah, tiens, c'est random, la fonction ?
Je croyais que c'était rand ...
De toute façon, je n'y connais rien au C cheeky !
cerede2000 a écrit :
hum ou alors pour randomiser cette variante a = random (41) * 2-1
Faux, tu risques de tirer la case -1 qui est en dehors de ton tableau.
Sally a écrit : [...] a = random (40) * 2 + 1; [...]
C'est comme ça et pas autrement qu'il faut faire.

ses noires (le sous-ensemble contenant la case en bas à gauche) est :int a = 2 * rand ( n*n / 2 ) ; y = a / n ; x = a % n + y % 2 ;Pour un damier n*n avec n pair, l'algorithme pour obtenir les caen bas à droite), c'est :int a = 2 * rand ( n*n / 2 ) + 1 ; y = a / n ; x = a % n - y % 2 ;Pour obtenir les cases blanches (le sous-ensemble contenant la case Les deux différences sont le +1 pour a, et le + ou - y%2.
Ce n'est pas plus compliqué que ça ...

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

61

oui mais Ethaniel le probleme c'est que pour les deux ca comment peut on aleatoirement prendre l'un ou l'autre car avec ca
a = random (41) * 2-1; ca marche meme si il est vrai ke je tire la case -1 mais vu que dans mon code si on a un chiffre qui sort on retire alors ca marche

62

fou !!!
contresms.gif

zen ... zen ... zen ...
Pour tirer les cases paires : a = 2 * random ( 41 ) ;
Pour tirer les cases impaires : a = 2 * random ( 40 ) + 1 ;
C'est comme ça et pas autrement, point barre.

Et si tu veux aléatoirement tirer soit une case paire, soit une case impaire (c'est ce que j'ai cru comprendre de ton charabia, désolé de te froisser, mais c'est le mot adapté), ça veut dire que tu cherches à tirer aléatoirement une des cases du tableau, sans restriction.

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

63

non ce que j'ai dit c'est que je cherche une solution pour faire ca en gros
r=random(2);
a = random (41) * 2-r;

64

zen ...
As-tu vraiment r ) + r ;
 cherché ?r = random ( 2 ) ;
a = 2 * random ( 41 -

Avec r, tu choisis un des deux sous-ensembles de cases (soit les 40 cases paires, soit les 41 cases impaires), puis avec a, tu choisis un des cases du sous-ensemble.
Donc c'est bien ce que je disais, tu choisis en fait une des cases du tableau au hasard, et il est bien plus rapide de faire x = random(9) et y = random(9) ...
La seule différence, c'est que dans ce cas, tu as 40 chances sur 81 de tirer une case paire, et 41 chances sur 81 de tirer une case impaire, avec qu'avec ton algorithme utilisant r, tu as 1 chance sur 2 de tirer une case paire, et 1 chance sur 2 de tirer une case impaire.
Mais bon, pour ce que ça change ...

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

65

Comment ca de faire x=random(9) et y=random(9) avec ca on ne peut pas tirer une case sur 2. Si??

66

Mais ça veut dire quoi, pour toi, tirer 1 case sur 2 ???
Décris-nous clairement, pas à pas, ce que tu veux que ton algorithme fasse, du tout début à la toute fin, avec toutes les étapes intermédiaires, avec des exemples précis, et avec des schémas explicatifs à l'appui tout du long, merci.

Tu n'arrêtes pas de dire des trucs et leur contraire, et malgré 3 pages de topics, je crois que personne n'a encore compris ce que tu cherchais à faire, puisque dès que l'on pense avoir saisi, paf, tu dis quelque chose en contradiction. On en viendrait presque à croire que tu ne sais pas toi-même ce que tu veux ...
[...]
Comment veux-tu que j' sois d'accord
Avec toi
J'ai d'jà du mal à être d'accord
Avec moi
[...]

Renaud, Socialiste
Là, je n'en plus plus, j'ai beau être construit en 100% zen, je crois que je vais vite abandonner si ça reste aussi incompréhensible ...

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

67

ben j'ai deja expliquer et on ma donner l'algo lol je voit pas!!
Enfin en gros ce que je veut clairement, si on prend un plateau de jeu de dame ou d'echec c'est tirer soit sur tous les blanc et aucun noir soit sur tout les noir et aucun blanc et randomise ces deux choix voila

68

bah au début de la partie, tu fais un random qui te sort soit 0 soit 1, et en fonction de ça tu ajoutes ou non la constante qui décalle des noirs sur les blancs ou inversement.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

69

Je crois que je commence à saisir (de nouveau, et j'espère que cette fois c'est la bonne embarrassed ...).

Tu dis que tu veux, en début de partie, choisir au hasard un des deux sous-ensembles (soit les cases noires, soit les cases blanches), et ensuite n'utiliser que ce sous-ensemble dans le reste de la partie.
C'est bien ça (1) ?
Si oui, il suffit de calculer ton r en dehors]utilisation_de_x_et_y[/i] }
 de ta boucle, ce qui donne :r = random ( 2 ) ;
[i]instruction_de_boucle[/i]
{ a = 2 * random ( 41 - r ) + r ;
  y = a / 9 ;
  x = a % 9 ;
  [i
Le problème, c'est que toi tu avais écrit, la toute première fois que r est apparu :
cerede2000 a écrit :
non ce que j'ai dit c'est que je cherche une solution pour faire ca en gros
r=random(2); a = random (41) * 2-r;
Vu ce que tu avais posté avant, r était implicitement dans la boucle.
Ton gros problème, c'est que TU NE POSTES PAS TES ALGOS !!!!!!!
Tu n'en donnes que des tout petits morceaux qui ne veulent strictement rien dire sortis de leur contexte, et après on ne comprend plus rien quand tu parles de boucle infinie alors que tu donnes du code qui ne contient aucune boucle roll ...
Dorénavant, POSTE TON CODE EN ENTIER, ou du moins un gros bloc qui se suffit à lui-même, sans quoi IL NOUS EST IMPOSSIBLE DE TE REPONDRE, même avec toute la bonne volonté du monde.

Ensuite, tu dis que tu veux tirer TOUTES les cases du sous-ensemble précédemment choisi.
C'est bien ça (2) ?
Si oui, y a-til une différence dans ton code entre les tirer dans un certain ordre et les tirer dans le désordre (3) ?
S'il y a une différence et qu'il faut impérativement les choisir dans un ordre aléatoire, LE CODE QUE TU AS POSTE NE NOUS PERMETTAIT PAS DE LE DEVINER !
Nous ne sommes pas devins !!!
Et si ton code t'autorise à tirer les cases dans un certain ordre, le random sur a est totalement inutile, mais bon, pourquoi faire simple quand on peut faire compliqué roll ? (Réponse : Pour être sûr que personne ne nous comprenne embarrassed ; et crois-moi, tu manies ça à la perfection ...).
; for ( int a = 0 ; a < 41 - r ; a ++ ) { y = a / 9 ; x = a % 9 ; [i]utilisation_de_x_et_y[/i] }Dans ce cas, tire les cases dans l'ordre, tu seras sûr de toutes les avoir, et ceci en un temps minimum :r = random ( 2 )

Merci de répondre aux 3 questions numérotées de (1) à (3) en indiquant bien la référence (exemple : (1) Oui / (2) Oui / (3) Non), puis en développant les réponses, en postant le code en intégralité afin que l'on puisse t'aider.

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

70

Lol encore merci le probleme c'est qu ca y'est mon probleme est resolu depuis le post ./64 je repond quand meme mais sans les numero en faite cette algo me sert pour ma bataille navale a faire tirer le CPU donc c'est completement aleatoire mais il ne sert a rien de le fair tirer sur tout les cases 1 sur 2 suffit puisque le plus petit bateaux fait 2 cases donc voila et encore merci

71

Je n'ai pas encore compris exactement ce que tu voulais que ton algorithme fasse, mais bon ...
Si tu dis que c'est bon, tant mieux pour toi, comme ça je n'ai plus à me prendre la tête sur ton truc ...

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

72

Lol tu na toujour pas compris ce que je voulait alors que tu a repondu parfaitement t'est balaise respect la!!
Je l'ai dit ce que je voulais dans mon avant dernier post!!!!

73

En fait, ce n'est pas que je n'ai pas compris (enfin si, un peu), c'est surtout que je ne vois pas l'intérêt de certains morceaux de ton code ...
Si tu donnais le code complet, peut-être que ça deviendrait évident, mais là, comme tu ne veux apparemment vraiment pas fournir ton source ...

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

74

Lol ce n'est pas que je veut fournir la source enfin si je veut pas fournir la source entiere et dnoc ca ne sert a rien que je donne qu'un bout car ca ne vous avancerais pas plus. Mais bon c'est regle maintenant c'est bon. Merci enore