求模拟一组数据的方法

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

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

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

工作完后恢复到低位状态

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

每秒采集随机数据,区间可调,
设备运行或空闲的机制是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);
    }

这个要看你的模拟的物理量有什么特征,是白噪声波动,还是随机振动,还是什么运动,假设是随振动,那么就产生一个随机数+平均数

比如电压在10V+-1V附近波动,就是


import java.util.*;
public class Program {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
double vot = 10.0 + (Math.random () * 2.0 - 1.0);
System.out.println(vot);
}
}
}