首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建随机数据C#

创建随机数据C#
EN

Stack Overflow用户
提问于 2015-10-12 11:22:34
回答 3查看 789关注 0票数 0

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

我的程序的要求之一是,如果心率整数降到某个数字以下,就会触发警报。

不过,我遇到的问题是,如果心率在触发警报之前降到最低心率整数以下,然后又直接反弹,这不是警报的测试,请参阅伪代码:

代码语言:javascript
复制
If heart_rate < 60:
    Count = Count + 1
If heart _rate > 60:
     Reset Count variable 
If Count = 10:
     Set off alarm

因此,我需要生成数据,它模拟的心率下降到60 (病人死亡)。这样做的最快方法是创建程序读取的列表或文本文件来模拟情况,还是有一种奇怪的方法可以模拟随机数字,这些随机数可以触发警报,并在触发警报后保持在该整数附近?

对不起,如果这听起来非常混乱,我是一个python程序员,必须用C#编程。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-12 11:36:12

您的问题接缝是一个“数据流测试”。手动生成数据流不是我个人认为的“快速”(甚至是“理智”.)。您要么得到一个现有的数据集,要么生成它(但不是手动的,除非它是一个相对较少的数据点: 20~30)。

尽管如此,您需要测试一些东西,这意味着您需要知道,当目标病例(心率低于60)时,您的系统将正确捕获“异常”。反过来,这意味着你需要知道它发生在哪里,也就是时间的准确时刻。

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

然后,您将拥有以下初始数据流:

代码语言:javascript
复制
  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处插入一个“假警报”(8078595978),您就知道您的系统应该重置counter。对于“警报”,您也会这样做;您将知道何时应该发出警报的索引(时间点)。

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

票数 1
EN

Stack Overflow用户

发布于 2015-10-12 11:39:17

尝试这样做:您可能希望将rand.Next(min,max)更改为使用心跳的正常范围或任何您希望看到的心跳值范围。

代码语言:javascript
复制
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;
            }
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2015-10-12 11:48:59

代码语言:javascript
复制
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;
        }
    }
}

示例用法:

代码语言:javascript
复制
HeartrateGenerator.GenerateHeartrate(100, 20, 28);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33079869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档