消失的小海蒂 2020-09-17 00:01 采纳率: 0%
浏览 59
已采纳

求模拟一组数据的方法

假设有一些机器 需要模拟机器的 电压V和电流A

机器在空闲时 电压和电流维持在低位小范围浮动

每台机器随机不定时开始工作 工作时电流和电压在高位 较大范围浮动 工作持续几十秒

工作完后恢复到低位状态

需要持续的一直模拟下去 每秒采集一次电流电压 数据就在控制台输出就可

  • 写回答

2条回答 默认 最新

  • 珍妮玛•黛金 博客专家认证 2020-09-17 10:07
    关注

    每秒采集随机数据,区间可调,
    设备运行或空闲的机制是10-40的随机数是4的倍数就运行,否则空闲,如满意请采纳

    
    
            //空闲时间低位区间
        static int max_low = 20;
        static int min_low = 10;
    
        //运行时间高位区间
        static int max_high = 40;
        static int min_high = 30;
    
        //机器运行持续时间
        static int time = 5;
    
        //机器运行开始时间
        static boolean runOrStop = false;
    
        //每秒采集一次数据
        static int interval = 1;
    
        //从第一秒开始
        static int flag = 1;
        public static void main(String[] args) {
            System.out.println("==========数据采集程序开始==========");
            Random random = new Random();
            new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    try {
    
                        int ran = random.nextInt(max_high) % (max_high - min_low + 1) + min_low;
                        if(runOrStop){
                            int dianliu_high = random.nextInt(max_high) % (max_high - min_high + 1) + min_high;
                            int dianya_high = random.nextInt(max_high) % (max_high - min_high + 1) + min_high;
                            System.out.println("当前【运行】状态:第 " + flag + " 秒采集的电流数据=" + dianliu_high + ", 电压数据=" + dianya_high);
                            interval ++;
                            if(interval > time){
                                runOrStop = false;
                            }
                        }else{
                            //假如这个10-40之间的随机数是4的倍数,设备就运行,否则就空闲
                            if(ran % 4 == 0){
                                runOrStop = true;
                                interval ++;
                                int dianliu_high = random.nextInt(max_high) % (max_high - min_high + 1) + min_high;
                                int dianya_high = random.nextInt(max_high) % (max_high - min_high + 1) + min_high;
                                System.out.println("当前【运行】状态:第 " + flag + " 秒采集的电流数据=" + dianliu_high + ", 电压数据=" + dianya_high);
                            }else{
                                interval = 1;
                                runOrStop = false;
                                int dianliu_low = random.nextInt(max_low) % (max_low - min_low + 1) + min_low;
                                int dianya_low = random.nextInt(max_low) % (max_low - min_low + 1) + min_low;
                                System.out.println("当前^空闲^状态:第 " + flag + " 秒采集的电流数据=" + dianliu_low + ", 电压数据=" + dianya_low);
                            }
                        }
                        flag ++;
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            },0,1 * 1000);
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 vmware exsi重置后的密码
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面