1

だから私はカウンターを持っています。何かの現在の量を計算することになっています。これを計算するために、開始日、開始量、およびカウンターを1秒ごとにインクリメントする量を知っています。簡単に簡単。トリッキーな部分は、成長が完全に直線的ではないということです。毎日、増分量は設定された量だけ増加します。これをアルゴリズムで再作成する必要があります。基本的に、開始値、時間の経過とともに増加する量、および時間の経過とともに増加する量に基づいて、現在の日付の正確な値を計算します。

私のターゲット言語はJavascriptですが、擬似コードも問題ありません。

ABのソリューションに基づく:

var now = new Date();

var startDate1 = new Date("January 1 2010");
var days1 = (now - startDate1) / 1000 / 60 / 60 / 24;
var startNumber1 = 9344747520;
var startIncrement1 = 463;
var dailyIncrementAdjustment1 = .506;
var currentIncrement = startIncrement1 + (dailyIncrementAdjustment1 * days1);

startNumber1 = startNumber1 + (days1 / 2) * (2 * startIncrement1 + (days1 - 1) * dailyIncrementAdjustment1);

それはあなたたちにとって合理的に見えますか?

4

3 に答える 3

2

これは2次関数です。tが経過した場合、それは2a,b,c + bt + cで通常であり、最初の3秒間の結果を代入することで把握できます。

または:等差数列の式を使用します。ここa1で、は初期増分であり、dは参照する「設定量」です。数式が与えるものに「開始量」を追加することを忘れないでください。

x 0が初期量、dが初期増分、eが増分を増やすための「設定量」である場合、x 0 +(t / 2)*(2d +(t-1)* e)になります。

于 2010-03-09T16:50:23.697 に答える
1

私があなたの質問を正しく理解している場合、あなたは初期値x_0、1秒あたりの初期増分、および1日あたりd_0の増分調整を持っています。eつまり、1日目では1秒あたりd_0の増分は、2日目では1秒あたりの増分はd_0 + eなどです。

次に、1秒あたりの増分は次のようになりますt

d(t) = d_0 + floor(t / S) * e

ここSで、は1日あたりの秒数であり、tはから経過した秒数ですt = t_0。それで

x = x_0 + sum_{k < floor(t / S)} S * d(k) + S * (t / S - floor(t / S)) * d(t)

あなたが探している式です。ここから、これを単純化して

x = x_0 + S * floor(t / S) d_0 + S * e * (floor(t / S) - 1) * floor(t / S) / 2.
于 2010-03-09T16:45:48.170 に答える
0
use strict; use warnings;

my $start = 0;
my $stop = 100;
my $current = $start;

for my $day ( 1 ..  100 ) {
    $current += ($day / 10);
    last unless $current < $stop;
    printf "Day: %d\tLeft %.2f\n", $day, (1 - $current/$stop);
}

出力:

日:1左1.00
日:2左1.00
日:3左0.99
日:4左0.99
日:5左0.98
..。
日:42左0.10
日:43左0.05
日:44左0.01
于 2010-03-09T16:44:30.153 に答える