创建随机数据c#

本文关键字:数据 随机 创建 | 更新日期: 2023-09-27 18:17:11

我正在尝试创建一个心跳监视器,需要一些错误的信息来输入我的程序来检查它的工作。

我的程序的一个要求是当心率整数低于某一数值时发出警报。

然而,我的问题是,如果心率在触发警报之前低于最小心率整数,然后直接反弹回来,这不是警报的测试,见伪代码:

If heart_rate < 60:
    Count = Count + 1
If heart _rate > 60:
     Reset Count variable 
If Count = 10:
     Set off alarm

所以我需要生成模拟心率低于60(患者死亡)的数据。要做到这一点,最快的方法是创建一个列表或文本文件,程序读取来模拟这种情况,还是有一种时髦的方式,可以模拟随机数,可以触发警报,并在警报被触发后保持在整数附近?

对不起,如果这听起来超级混乱,我是一个python程序员,必须在c#中编程。

创建随机数据c#

你的问题似乎是一个"数据流测试"的问题。手动生成数据流并不是我个人认为"快速"(甚至"理智")的事情。你要么获得一个现有的数据集,要么生成它(但不是手动生成,除非数据点相对较少:20~30)。

也就是说,您需要测试一些东西,这意味着您需要知道当目标情况(心率低于60)时,您的系统是否正确捕获"异常"。反过来,这意味着你需要知道它发生在哪里,即确切的时刻。

我的建议是:自动生成一个数据集,充满"正常"值。在不同的时间点(即数据流中的位置)手动插入不同频率的"异常"值(59),以查看系统是否重置计数器(少于10次出现)或是否发出警报(至少10次出现)。

您将得到以下初始数据流:

  80 78 78 81 80 81 ... 75 76 80 // say 100 values ("data points")
// 0  1  2  3  4  5     97 98 99 -> indices ("time points")

如果你在索引2插入一个"假警报"(80 78 59 59 78),例如,你知道你的系统应该重置counter。对于"alarm",你也会这样做;您将知道何时应该发出警报的指数(时间点)。

Edit:关于"手动"插入目标值的部分应该解释为"经验地选择一个充满随机数据的数组(或列表)的索引,应该插入数据"。

public static class HeartrateGenerator
{
    static Random random = new Random();
    public static IEnumerable<int> GenerateHeartrate(
        int totalSequenceLength,
        int dropsBelow60After, 
        int bouncesBackAfter = -1)
    {
        // NOTE: check input data
        int i = 0;
        // return values > 60
        while (i < dropsBelow60After)
        {
            i++;
            yield return 60 + random.Next() % 60;
        }
        if (bouncesBackAfter > 0)
            // return values < 60
            while (i < bouncesBackAfter)
            {
                i++;
                yield return random.Next() % 60; 
            }
        // return normal values again
        while (i < totalSequenceLength)
        {
            i++;
            yield return 60 + random.Next() % 60;
        }
    }
}

使用例子:

HeartrateGenerator.GenerateHeartrate(100, 20, 28);

试试这个:你可能想改变rand.Next(min,max)使用正常的心跳范围或任何你想看到心跳值的范围。

public class Program
{
    public void Main(string[] args)
    {
        Random rand = new Random();
        bool flag = true;
        int count = 0;
        while (flag)
        {
            if(count==10)
            {
                Console.WriteLine ("dead");
                flag = false;
                break;
            }
            Thread.Sleep(1000);
            var heart_rate = rand.Next(50,70);
            Console.WriteLine (heart_rate);
            if (heart_rate < 60)
            {
                count++;
            }
            else if(heart_rate > 60)
            {
                count=0;
            }
        }
    }
}