为不同的对象分配随机数

我有一个使用泊松分布随机生成数字的函数,并且我还有一个巴士类和一个巴士站类。现在我已经生成了 5 个公交车对象和 15 个公交车站对象。我的目标是为这五个公交车对象分配随机数以指示它们的公交车站位置。


private static int getPoissonRandom(double mean){

Random r = new Random();

double L = Math.exp(-mean);

int k = 0;

double p = 1.0;

do {

    p = p * r.nextDouble();

    k++;

} while (p > L);

return k - 1;

}

巴士站等级


public class busStop {

int bus_stop_id;

public busStop(){    

  this.bus_stop_id=bus_stop_id;

public void create_busStop(int total,int position){

   for(int i=1; i<=total; i++){

        bus_stop_id=i;

        //System.out.println("Bus_Stop with ID:"+i+" Spawned");

        setBusPosition(i,position);

    }

}

public void setBusPosition(int bus_id, int stop_id){

    System.out.println("Bus : "+bus_id+ " at Stop :"+stop_id);

    }

 }

巴士类


public class Bus {

int capacity;

int bus_id=0;




public Bus(){

  this.capacity=50;    

  this.bus_id=bus_id;


public void spawn_bus(int bus_total){

    for(int i=1; i<=bus_total; i++){

        bus_id=i;

        System.out.println("Bus with ID:"+i+" created");

    }

}   

}


主功能


    public static void main(String[] args) {

  int bus_number=5;  

  int total_bus_stops=15; 

  Bus bus = new Bus();

 busStop stops = new busStop();

 getPoissonRandom(5);

 bus.spawn_bus(bus_number);

 stops.create_busStop(total_bus_stops,getPoissonRandom(5));


}

当我运行代码时,我不断收到分配给所有 5 个总线对象的一个数字,但我希望使用泊松分布生成器将不同的随机数分配给 5 个总线对象


哈士奇WWW
浏览 83回答 1
1回答

HUH函数

您面临这个问题,因为您只调用了一次随机生成方法。要实现所需的输出,您需要在 create_busStopMethod 中调用 getPoissonRandom(double Mean) ,如下所示:&nbsp; &nbsp; public void create_busStop(int total,int position){&nbsp; &nbsp;for(int i=1; i<=total; i++){&nbsp; &nbsp; &nbsp; &nbsp; bus_stop_id=i;&nbsp; &nbsp; &nbsp; &nbsp; //System.out.println("Bus_Stop with ID:"+i+" Spawned");&nbsp; &nbsp; &nbsp; &nbsp; setBusPosition(i,MainClass.getPoissonRandom(position));&nbsp; &nbsp; }}然后将该方法调用为stops.create_busStop(total_bus_stops,5);或者您可以修改 creat_busStop 以接受 id 和位置而不是total_bus_stops,如下所示:public void create_busStop(int id,int position){&nbsp; &nbsp; bus_stop_id=id;&nbsp; &nbsp; setBusPosition(id,position);}}然后在 for 循环中调用该方法for(int i=0;i<total_bus_stops;i++){stops.create_busStop(i,getPoissonRandom(5));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java