- 締切済み
JavaScriptについて
JavaScriptについての質問です。 法則のない計算を読み込ませるためにはどのような方法がありますか? ホームページを作っていて、開始日と終了日を決めてもらい、 その日数が356日以上になった場合、値段を上げる法則が ありません。 例えば… 366日:\100 367日:\102 368日:\103 369日:\105 370日:\107… のような感じで、\1アップするときと\2アップするときの法則がありません。※これが550日まで続きます。 表示するのは、1日分です。 どのようにしたらいいですか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- kokorone
- ベストアンサー率38% (417/1093)
var from_day; var end_day; var ofst_day; var ofst_i; var inp_gaku; var out_gaku; from_day = new Date("2007/08/10"); end_day = new Date("2008/08/12"); ofst_day = (end_day - from_day) /(1000*60*60*24); ofst_i = ofst_day - 365; inp_gaku = 100; out_gaku = 0; add_gaku = new Array(0,2,3,5,7); if(ofst_i >= 0){ out_gaku = inp_gaku + add_gaku[ofst_i]; } alert(out_gaku); from_dayは開始日end_dayは終了日 ofst_dayは経過日数 add_gakuは、365日目からの差額を日別にならべたものです。
- susie-t
- ベストアンサー率86% (37/43)
法則がない=ランダムということ? 実行ごとにランダムということであれば Math.randomを使う方法がありますが・・・。 var num = Math.floor(Math.random() * 2); とすると、実行ごとにnumには0か1が入ります。 (*2が*10なら0~9のどれか) これで+1するか+2するか決めればよいかと。 固定でランダム(いつ実行しても同じ結果になる) となるとちょっと分からないですね・・・。 いちど上記で実行・取得した乱数をリストに取得して 持っておくくらいですが・・・。
超過日数がいくつまでか判っているので増分値(率)を格納しておけば良いのでは? var oc = []; oc = [ 100, //365日目 100, //366 102, 105, 107 //370 ]; こんな感じで持っていて現在日数が365を越えてたら365を引いて配列の添え字を求めて演算したらどうだろう。 例では「%」の数値だから100で割ってかけ算しないと100円以外の価格に対応できない。 そうでなく割り増し価格が1日+100円、2日目は+102円というなら計算方法と添え字算出を変更し配列の値を366に該当する分から用意すれば良い
- kokorone
- ベストアンサー率38% (417/1093)
n日目にはx円値上げするというのは、確定次項なのでしょうか? そうであれば、50日分の値上げ額(365日目からの差額)を 50個の配列に入れて、経過日数に該当する配列の値を加算すると いう方法ではいかがでしょうか? 経過日数の1の位で値上げ額を決定しているなど、法則性はないのですよね?
補足
経過日数の1の位で値上げ額が決定されるような法則ではなく、ランダムに\1あがったり、\2あがったりするので、 どのような形にしたら良いのか、わからずにいます。 初心者のなで、もう少し詳しく教えていただきたいのですが、、、 宜しくお願いします。