Bonsoir,

je converti un programme javascript en php !!
voici le js ( oui je sais , il y a des var partout, mais ce n'est pas de moi !! ):
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
var seed = Date.now();
 
function valueOrDefault(value, defaultValue) {
    return typeof value === 'undefined' ? defaultValue : value;
}
 
function rand(min, max) {
    min = valueOrDefault(min, 0);
    max = valueOrDefault(max, 0);
    console.log(seed);
    seed = (seed * 9301 + 49297) % 233280;
    return min + (seed / 233280) * (max - min);
}
 
function numbers(config) {
    var cfg = config || {};
    var min = valueOrDefault(cfg.min, 0);
    var max = valueOrDefault(cfg.max, 100);
    var from = valueOrDefault(cfg.from, []);
    var count = valueOrDefault(cfg.count, 8);
    var decimals = valueOrDefault(cfg.decimals, 8);
    var continuity = valueOrDefault(cfg.continuity, 1);
    var dfactor = Math.pow(10, decimals) || 0;
    var data = [];
    var i, value;
 
    for (i = 0; i < count; ++i) {
        value = (from[i] || 0) + this.rand(min, max);
        if (this.rand() <= continuity) {
            data.push(Math.round(dfactor * value) / dfactor);
        } else {
            data.push(null);
        }
    }
    return data;
}
console.log(numbers({"min": -100, "max": 100, "count": 5}));

le résultat: on voit que la valeur de _seed change ! ce sont des millisecondes ! ( on le voit au premier chiffre affiché )
la valeur de this.rand(min, max) change à chaque itération.

Du coup , ça retourne un tableau avec des valeurs différentes .

Mais si je "traduit" en php ? comment avoir la même chose ? je ne trouve pas le moyen d'avoir le même résultat: la variable _seed ne change pas.
Parce que les microseconde en PHP ...
j'ai tenté un fonction:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
public function milliseconds() {
        $mt = explode(' ', microtime());
        return ((int)$mt[1]) * 1000 + ((int)round($mt[0] * 1000));
    }

que j'appelle ensuite dans la fonction rand: $seed = $this->milliseconds(); mais il n'y a aucun changement
Je ne voit pas comment faire .
Si quelqu'un à une idée.
Merci,

Laurent.