Prendre au hasard le % d'une population

--maxime-- -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
voila je sur une population représenter par un tableau 2D de borne x et y je souhaite prendre 25% des cases du tableau pour faire quelque chose avec.

Ma première idée était la suivante :

fonction toto (tableau) :

Pour i de 1 à x :
Pour j de 1 à y :
p=nb au hasard entre 0 et 100
Si p<=25 : blabla
Sinon : blablabla

Le problème c'est que je n'aurais pas tout a fait 25% de cette manière.

Du coup j'ai pensé à ça :

fonction toto2 (tableau) :

Pour i dans (nbTot//4) (division entière)
a=nb au hasard entre 0 et x
b=nb au hasard entre 0 et y
tableau(a,b)=blabla

Ici j'aurais 25% sauf si je prend plusieurs fois par hasard la ou les mêmes cases du tableau. Donc je souhaiterais savoir comment éviter de reprendre la même cases.

Merci pour votre aide

2 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Si au moins ont savait avec quel langage tu veux faire ça.
    De plus ton explication n'est pas fort claire.
    A+
    0
  2. --maxime--
     
    Le langage que j'utilise est python. Désolé si ce n'est pas clair mais j'ai indenter mes fonctions et quand j'ai valider tout a été modifier. Je suis d'accord avec toi c'est presque illisible.
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Je ne connais rien en python, toutefois ton algo ne sait pas fonctionner, tu aura toujours les 25 premier
      Je verrais plutôt ça..
      Tableau de boolean > B(19,4) 
      Tableau de données TBd(19,4) 'en supposant x=0 à 19 et Y = 0 à 4 
      Tableau de résulta TBr(24) 
      Entier (Integer) > TirageX 
      Entier (Integer) > TirageY 
      Entier > NB 
      Tant que NB<25 
          TirageX = nb au hasard entre 0 et 19 
          TirageY = nb au hasard entre 0 et 4 
          Si B(X,Y)=0 > exécute (then) 
              B(X,Y)=1 
              TBr(NB) = TBd(X,Y) 
              NB +=1 
          Fin Si 
      Loop
      0
    2. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Si le tableau des données est de 0 à 99 Tu dis, faudrait une petite modif
      0