tween.php function($t,$b,$c,$d) { return $c*$t/$d + $b; }, 1 = function($t,$b,$c,$d) { return $b - $c*$t/$d; }, 2 = function($t,$b,$c,$d) { return $c*($t/=$d)*$t + $b; }, 3 = function($t,$b,$c,$d) { return -$c *($t/=$d)*($t-2) + $b; }, 4 =
function($t,$b,$c,$d) { return $c*$t/$d + $b; }, 1 => function($t,$b,$c,$d) { return $b - $c*$t/$d; }, 2 => function($t,$b,$c,$d) { return $c*($t/=$d)*$t + $b; }, 3 => function($t,$b,$c,$d) { return -$c *($t/=$d)*($t-2) + $b; }, 4 => function($t,$b,$c,$d) { return $c*($t/=$d)*$t*$t + $b; }, 5 => function($t,$b,$c,$d) { return $c*(($t=$t/$d-1)*$t*$t + 1) + $b; }, 6 => function($t,$b,$c,$d) { return $c*($t/=$d)*$t*$t*$t + $b; }, 7 => function($t,$b,$c,$d) { return -$c * (($t=$t/$d-1)*$t*$t*$t - 1) + $b; }, 8 => function($t,$b,$c,$d) { return $c*($t/=$d)*$t*$t*$t*$t + $b; }, 9 => function($t,$b,$c,$d) { return $c*(($t=$t/$d-1)*$t*$t*$t*$t + 1) + $b; }, 10 => function($t,$b,$c,$d) { return ($t==0) ? $b : $c * pow(2, 10 * ($t/$d - 1)) + $b; }, 11 => function($t,$b,$c,$d) { return ($t==$d) ? $b+$c : $c * (-pow(2, -10 * $t/$d) + 1) + $b; } ]; $t = time();//最后的时间 修改更改 $b = 10000 + rand(0,20); $rt = []; shuffle($tween); $key = rand(0,11);//添加其他后再增加 $func = $tween[$key]; //$func = $tween[11]; $d = 30; for($i;$i < $d; $i++) { $j = $t + $i; $v = $func($i,$b, $i, $d); $rt[$j] = sprintf("%.2f", $v); } var_export($rt);优化后的算法
function($num) { return pow($num, 2); }, 1 => function($num) { return -(pow(($num - 1), 2) - 1); }, 2 => function($num) { if (($num /= 0.5) < 1) return 0.5 * pow($num, 2); return -0.5 * (($num -= 2) * $num - 2); }, 3 => function($num) { return pow($num, 3); }, 4 => function($num) { return (pow(($num - 1), 3) + 1); }, 5 => function($num) { if (($num /= 0.5) < 1) return 0.5 * pow($num, 3); return 0.5 * (pow(($num - 2), 3) + 2); }, 6 => function($num) { return pow($num, 4); }, 7 => function($num) { return -(pow(($num - 1), 4) - 1); }, 8 => function($num) { if (($num /= 0.5) < 1) return 0.5 * pow($num, 4); return -0.5 * (($num -= 2) * pow($num, 3) - 2); }, 9 => function($num) { return pow($num, 5); }, 10 => function($num) { return (pow(($num - 1), 5) + 1); }, 11 => function($num) { if (($num /= 0.5) < 1) return 0.5 * pow($num, 5); return 0.5 * (pow(($num - 2), 5) + 2); }, 12 => function($num) { return -cos($num * (pi() / 2)) + 1; }, 13 => function($num) { return (-.5 * (cos(pi() * $num) - 1)); }, 14 => function($num) { return ($num == 0) ? 0 : pow(2, 10 * ($num - 1)); }, 15 => function($num) { return ($num == 1) ? 1 : -pow(2, -10 * $num) + 1; }, 16 => function($num) { if ($num == 0) return 0; if ($num == 1) return 1; if (($num /= 0.5) < 1) return 0.5 * pow(2, 10 * ($num - 1)); return 0.5 * (-pow(2, -10 * --$num) + 2); }, 17 => function($num) { return -(tan(1 - ($num * $num)) - 1); }, 18 => function($num) { return tan(1 - pow(($num - 1), 2)); }, 19 => function($num) { if (($num /= 0.5) < 1) return -0.5 * (tan(1 - $num * $num) - 1); return 0.5 * (tan(1 - ($num -= 2) * $num) + 1); }, 20 => function($num) { if (($num) < (1 / 2.75)) { return (7.5625 * $num * $num); } else if ($num < (2 / 2.75)) { return (7.5625 * ($num -= (1.5 / 2.75)) * $num + .75); } else if ($num < (2.5 / 2.75)) { return (7.5625 * ($num -= (2.25 / 2.75)) * $num + .9375); } else { return (7.5625 * ($num -= (2.625 / 2.75)) * $num + .984375); } }, 21 => function($num) { $s = 1.70158; return ($num) * $num * (($s + 1) * $num - $s); }, 22 => function($num) { $s = 1.70158; return ($num = $num - 1) * $num * ((s + 1) * $num + $s) + 1; }, 23 => function($num) { $s = 1.70158; if (($num /= 0.5) < 1) return 0.5 * ($num * $num * ((($s *= (1.525)) + 1) * $num - $s)); return 0.5 * (($num -= 2) * $num * ((($s *= (1.525)) + 1) * $num + $s) + 2); }, 24 => function($num) { return -1 * pow(4, -8 * $num) * sin(($num * 6 - 1) * (2 * pi()) / 2) + 1; }, 25 => function($num) { $s = 1.70158; return (($num /= 0.5) < 1) ? 0.5 * ($num * $num * ((($s *= (1.525)) + 1) * $num - $s)) : 0.5 * (($num -= 2) * $num * ((($s *= (1.525)) + 1) * $num + $s) + 2); }, 26 => function($num) { $s = 1.70158; return $num * $num * (($s + 1) * $num - $s); }, 27 => function($num) { $s = 1.70158; return ($num -= 1) * $num * (($s + 1) * $num + $s) + 1; }, 28 => function($num) { if ($num < (1 / 2.75)) { return (7.5625 * $num * $num); } else if ($num < (2 / 2.75)) { return (7.5625 * ($num -= (1.5 / 2.75)) * $num + .75); } else if ($num < (2.5 / 2.75)) { return (7.5625 * ($num -= (2.25 / 2.75)) * $num + .9375); } else { return (7.5625 * ($num -= (2.625 / 2.75)) * $num + .984375); } }, 29 => function($num) { if ($num < (1 / 2.75)) { return (7.5625 * $num * $num); } else if ($num < (2 / 2.75)) { return 2 - (7.5625 * ($num -= (1.5 / 2.75)) * $num + .75); } else if ($num < (2.5 / 2.75)) { return 2 - (7.5625 * ($num -= (2.25 / 2.75)) * $num + .9375); } else { return 2 - (7.5625 * ($num -= (2.625 / 2.75)) * $num + .984375); } }, 30 => function($num) { if (($num /= 0.5) < 1) return 0.5 * pow($num, 4); return -0.5 * (($num -= 2) * pow($num, 3) - 2); }, 31 => function($num) { return pow($num, 4); }, 32 => function($num) { return pow($num, 0.25); }, 33 => function($num) { return $num; }, 34 => function($num) { return (-cos($num * pi()) / 2) + 0.5; }, 35 => function($num) { return 1 - $num; }, 36 => function($num) { return sin($num * (pi() / 2)); }, 37 => function($num) { $num = $num + (rand() - 0.5) / 5; return (-cos(($num < 0 ? 0 : $num > 1 ? 1 : $num) * pi()) / 2) + 0.5; }, 38 => function($num) { return (-cos($num * pi() * (9 * $num)) / 2) + 0.5; }, 39 => function($num) { return 1 - (cos($num * 4.5 * pi()) * exp(-$num * 6)); }, ]; shuffle($tween); $key = rand(0, 39); //添加其他后再增加 $func = $tween[$key]; $t = time(); //最后的时间 $rt = []; $d = 30; $b = 10000 + rand(-21, 21); for ($i = 0; $i < $d; $i++) { $v = $func($i/$d)*$d; if($v > $d) $v = $d; if($v < 0 && $v < -$d) $v = -$d; $j = $t + $i; $rt[$j] = sprintf("%.2f", $b + $v); } var_export($rt); exit();