0

C に似た珍しい言語 (PAWN) で書かれたオンライン ゲームのシステムを作成しています。

私はいくつかの調査を行い、いくつかの良い情報を見つけましたが、それは私が完全に探しているものではありません.

このゲームには、株や株式を入れたい業界がいくつかあります。

例えば:

警視庁魚市場住宅市場

株式のボラティリティは、価格変動のスイング (+/-) の量です。ボラティリティが高いほど、スイングは高くなります。

私のゲームでは、各業界の価格が毎分更新されます。

1株あたりの最低価格に達すると、業界は破産します。業界の株式は、1 株あたりの最高価格に達すると分割されます。

例:

  • 警察署 - (220回の価格更新ごとに倒産) (660回の価格更新ごとに株式分割 - それまでに倒産しなければ)

  • 水産業 - (価格更新 1000 回ごとに倒産) (価格更新 220 回ごとに株式分割 - それまでに倒産しない場合)

  • 住宅市場 - (絶対に倒産しない)

関数を見つけて、揮発性を考慮した目的のコーディング言語に変更しました。

Float:GenerateNextPrice(stockid)
{
    if(stockid < 0 || stockid >= sizeof(gStockMarket)) return -1.0; // 

    new Float:rnd; 
    MRandFloatRange(0, 1.0, rnd); // generate number, 0 <= x < 1.0

    new Float:old_price = gStockMarket[stockid][gCurrentStockPrice];
    new Float:volatility = gStockMarket[stockid][gStockVolatility]; // A stable stock would have a volatility number of perhaps 2. A volatility of 10 would show some pretty large swings.
    new Float:change_percent = 2 * volatility * rnd;

    if (change_percent > volatility)
    {
        change_percent -= (2 * volatility);
    }
    new Float:change_amount = (old_price / 100) * change_percent;
    new Float:new_price = old_price + change_amount;
    return new_price;
}

この関数はボラティリティを考慮していますが、ボラティリティが高いほどスイングが大きくなります。

価格の上昇/下落を複製するが、一定量の呼び出しの後、上記のように最終的に破産または分割する場合、どのように機能しますか?

これが混乱を招く可能性があることを理解しており、喜んで質問に答えます.

4

0 に答える 0