-
Notifications
You must be signed in to change notification settings - Fork 0
/
data.php
67 lines (54 loc) · 1.69 KB
/
data.php
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
session_start();
header("content-type: text/json");
function getMovingAverage(array $data, $range)
{
$sum = array_sum(array_slice($data, 0, $range));
$result = array($range - 1 => $sum / $range);
for ($i = $range, $n = count($data); $i != $n; ++$i) {
$result[$i] = $result[$i - 1] + ($data[$i] - $data[$i - $range]) / $range;
}
return $result;
}
function getItem($index, $averages, $values, $max_height)
{
$value = ($index >= 15) ? $averages[$index] : $values[$index];
$item = array(
"id" => rand(0, $max_height),
"value" => $value
);
return $item;
}
function getValues($max_height,$final_limit)
{
$values = array();
for ($i = 0; $i < $final_limit; $i++) {
$values[] = rand(0, $max_height);
}
return $values;
}
function getData($moving_limit, $final_limit, $averages, $values, $max_height){
$data = array();
for ($index = $moving_limit; $index < $final_limit; $index++) {
$data[$index] = getItem($index, $averages, $values, $max_height);
}
return $data;
}
$moving_limit = 5;
$sample_size = 100;
$max_height = 100;
$final_limit = $sample_size + $moving_limit;
//$_SESSION["data"] = null;
if (!isset($_SESSION["data"])) {
$values = getValues($max_height, $final_limit);
$averages = getMovingAverage($values, $moving_limit);
$data = getData($moving_limit, $final_limit, $averages, $values, $max_height);
$_SESSION["data"] = $data;
$_SESSION["index"] = $moving_limit;
}
echo json_encode(array("data" => array($_SESSION["data"][$_SESSION["index"]])) );
$_SESSION["index"]++;
if ($_SESSION["index"] > $final_limit) {
$_SESSION["data"] = null;
$_SESSION["index"] = $moving_limit;
}