0

カウンターがあります。N 回後に 1 ずつ増加します。最初は急速に増加し、最終的には遅くなるように、どのアルゴリズムで数値 N を変更しますか。

ありがとう。

UPD: Java のソース コード:

currentProcent = 0;
deltaSecond = 3000f / (float) bigProcNumber;    // 3000f - 3 second, is fixed
new Thread(new Runnable() {
   public void run() {
      try {
         while (currentProc != (int) bigProcNumber) {
            Thread.sleep((int) (deltaSecond));
            // UI Change
         }
      } catch (InterruptedException e) {
         e.printStackTrace();
      }
   }
}).start();

デルタタイムを変更する必要がありますが、すべてのデルタタイムの合計が 3000 ミリ秒である必要があります。

4

2 に答える 2

2

あなたの質問を正しく解釈すると、最初は急速に増加し、後でゆっくりと増加する関数、おそらくこのような形のものを見つけたいと思いますか?

ここに画像の説明を入力

多分適当そうな機能を使ってグラフィックを作りましたLogが、他にもたくさんあります。

于 2012-11-15T10:21:21.533 に答える
1
  1. 大文字の「N」は予約されています。is を変数名として使用しないでください。

  2. 可変レートのクロックカウンターを構築したいようです。Mathematica にはクロックを制御するいくつかの異なる方法があり、それらには異なる特徴があります。(たとえば、更新間隔にPause[]関連する、または制御する機能 を見てください) あなたがしようとしていることのヒントをもっと教えてください。サンプルコードは良いです。CreateScheduledTask[]Dynamic

  3. Pauseベースのタイマーの例を次に示します。

    t = 0;
    Manipulate[
     t += dt;
     Pause[dt]; 
     Graphics[{Circle[], 
     Line[{{0., 0.}, {Cos[t/(2 Pi)], -Sin[t/(2 Pi)]}}]}]
     {{dt, 0.5}, 0.1, 1, 0.1, PopupMenu}
    ]
    
  4. の周りでタイマーを使用する場合は注意してくださいDynamicDynamicクロックを制御するために使用する例を次に示します。

    Manipulate[
     DynamicModule[{t = 0},
      Graphics[{
       Circle[], 
       Line[{{0., 0.}, {Cos[#/(2 Pi)], -Sin[#/(2 Pi)]} &@
        Dynamic[t += dt, UpdateInterval -> dt]}]
      }]
     ]
    ,{{dt, 0.5}, 0.1, 1, Appearance -> "Labeled"}
    ]
    
于 2012-11-15T13:31:47.293 に答える