首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将随机数分配给不同对象

将随机数分配给不同对象
EN

Stack Overflow用户
提问于 2019-10-05 14:04:19
回答 1查看 32关注 0票数 0

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

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

公共汽车站类

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

总线类

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

}

Main函数

代码语言:javascript
运行
复制
    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个总线对象

EN

Stack Overflow用户

回答已采纳

发布于 2019-10-05 15:52:26

您正面临着这个问题,因为您只调用了一次随机生成方法。要获得所需的输出,您需要在create_busStopMethod中调用getPoissonRandom(双均值),如下所示:

代码语言:javascript
运行
复制
    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,MainClass.getPoissonRandom(position));
    }
}

然后将该方法调用为

代码语言:javascript
运行
复制
stops.create_busStop(total_bus_stops,5);

或者,您可以修改creat_busStop以接受id和位置,而不是接受total_bus_stops,如下所示:

代码语言:javascript
运行
复制
public void create_busStop(int id,int position){
    bus_stop_id=id;
    setBusPosition(id,position);
}

}

然后调用for循环中的方法,如下所示

代码语言:javascript
运行
复制
for(int i=0;i<total_bus_stops;i++){
stops.create_busStop(i,getPoissonRandom(5));
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58245802

复制
相关文章

相似问题

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