2012-03-02 70 views
1

正在构建软件使用VS2010专业诊所。
其中要求是:算法分析:随机数

  1. 应该根据注册之日起产生病人数。
  2. 中东两位男性患者是11

  3. 中东两位女性患者22

  4. 后两位数字的范围从0到99
    例如,对于男性患者就读的今天: 2012-03-02。 我的问题是: 什么是可以每天进行登记的患者最大?

    这里是我的代码部分:

    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 2012-03-02 13:09:05

+0

以及我认为。每个(男性和女性)将是100-100。 – Pranav 2012-03-02 13:09:44

回答

3

你问什么患者的最大数量,每天可以注册?如果是这样,那么对于每个性别,唯一不同的是最后两位数字,因此根据该模式,每个性别有100个可能的患者代码。

虽然这样说的几件事情要注意。

首先你的随机数生成意味着你可能打在已经产生的pateient号码使用所有可用的可能性了。需要随机数来保持它们不连续?如果是这样,那么你应该做一些事情,比如最初从数字0到100的列表中进行洗牌,然后继续从中选择数字,或者如果您可能使用其中的一小部分,那么只需检查生成的ID是否可以离开已经存在。

此外,由于RandomNum()是一个整数,那么你可能会想,以确保其填充到两位数,包括它在你的病人数前。

0

在每天200理论上100为男性,100为女性。

顺便说一句,请注意,因为你生成一个随机数,你可以有非唯一编号。

这将是更好的搜索上次使用的ID(0-100),然后使用下一个。 甚至可能考虑到患者从系统中移除时存在差距。为此,您必须编写一个函数,返回性别和日期的第一个UNUSED ID。

类似:

id = GetFirstFreeId(GetCurrentDate(), gender); 

,并使用该ID为新患者。

而且最好是(从视图中使用性能点):

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

而且也应该是RandomNum代替RadomNum,但是这仅仅是一个错字。

1

为什么需要它是随机的?为什么不直接使用一个序列号,即男性患者2012-03-02-22-00 - 2012-03-02-22-99。

他们是否打算每天为每个性别注册最多100位新病人?