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

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
Si au moins ont savait avec quel langage tu veux faire ça.
De plus ton explication n'est pas fort claire.
A+
0
--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
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Si le tableau des données est de 0 à 99 Tu dis, faudrait une petite modif
0