2012-03-02 9 views
1

Am building VS2010 Proを使用するクリニックのソフトウェア。要件の中
は以下のとおりです。アルゴリズム解析:ランダム番号

  1. これは、登録の日付に基づいて患者数を生成する必要があります。男性患者のための
  2. 真ん中の2つの数字女性患者のための11

  3. 真ん中の2つの数字である今日在籍男性患者のための22

  4. 決勝の2桁は0から99までの範囲
    例です: 2012-03-02。 私の質問は: 1日に登録できる患者の最大数はいくらですか?ここ

    は、私のコードの一部です:

    public string GetCurrentDate() 
    { 
        DateTime currentDate = DateTime.Now; 
        string todaydate = currentDate.ToShortDateString().ToString(); 
        return todaydate; 
    } 
    
    
    public int RadomNum() 
    { 
        return _random.Next(00, 99); 
    } 
    
    
    public string GeneratePatientNumber(Gender gender) 
    { 
        return GetCurrentDate() + "-" + (int)gender + "-" + RadomNum(); 
    } 
    
+0

インタビューのようなものです...最大のものは何ですか?患者の – Pranav

+0

まあ私はそれぞれ100-100(男性と女性)になると思う。 – Pranav

答えて

3

あなたは、患者の最大数は一日あたりのあなたを登録することができるものを求めていますか?そうであれば、各性別ごとに変化する唯一のものが最後の2桁ですので、そのパターンに基づいて性別ごとに100の可能な患者コードがあります。

これまで述べてきたことには注意が必要です。

まず、あなたの乱数生成は、利用可能なすべての可能性を使用する前に、既に生成された純粋な数にうまく当てはまることを意味します。乱数はそれらを非順次的に保つために必要ですか?もしそうなら、最初に0から100までの数字のリストをシャッフルしてから、それからピッキングを続けるか、小さな部分を使う可能性がある場合は、生成されたIDすでに存在しています。

RandomNum()がintであることから、あなたの患者番号にそれを含める前に、2桁の数字が埋め込まれていることを確認してください。

0

理論的には、1日あたり200人:男性は100人、女性は100人。

Btw、乱数を生成するので、一意の番号がないことに注意してください。

最後に使用したID(0-100)を検索し、次のIDを使用する方がよいでしょう。 さらに、患者がシステムから取り除かれたときに隙間があることを考慮してもよいでしょう。このためには、性別と日付の最初のUNUSED IDを返す関数を記述する必要があります。以下のような

何か:

id = GetFirstFreeId(GetCurrentDate(), gender); 

、新たな患者のためにそのIDを使用します。

return string.Format("{0}-{1}-{2}", GetCurrentDate(), (int)gender, RadomNum()); 

そしてまた、それは代わりにRadomNumのRandomNumする必要がありますが、これは単なるタイプミスです:

また、それは、(使用するパフォーマンスの観点から)良いです。

1

なぜランダムにする必要がありますか?なぜ、連続番号を使用するだけではなく、つまり、男性患者は2012-03-02-22-00 - 2012-03-02-22-99です。

性別ごとに1日当たり最高100人の新規患者を登録する予定ですか?