public static double[] createRandomDistributionWithNoZero(int size, int precision, double somme_distrib) {
        double[] distribution = createRandomDistribution(size, precision, somme_distrib);
        if (somme_distrib > 0) {
            int nb_remplacement;
            List<Integer> donotmodifie = new ArrayList<>();
            /* on remplace les zeros par des epsilons */
            nb_remplacement = 0;
            for (int j = 0; j < distribution.length; j++) {
                if (distribution[j] == 0) {
                    nb_remplacement++;
                    distribution[j] = EPSILON;
                    donotmodifie.add(j);
                }
            }
            if (nb_remplacement > 0) {
                double added = donotmodifie.size() * EPSILON;
                double toSoustract = added / (double) distribution.length;

                for (int j = 0; j < distribution.length; j++) {
                    if (!donotmodifie.contains(j)) {
                        distribution[j] -= toSoustract;
                    }
                }
            }
            donotmodifie.clear();
        }
        return distribution;
    }