gpt4 book ai didi

java - 尝试从数组中获取随机元素,以便我可以将其标记为 "booked"

转载 作者:行者123 更新时间:2023-12-01 15:04:52 25 4
gpt4 key购买 nike

这就是我在数组中随机选择一个元素的方法,但是我不确定为什么它不起作用,我觉得我已经尝试了所有编写它的方法,任何想法。

public static Seat BookSeat(Seat[][] x){

Seat[][] book = new Seat[12][23];

if (x != null){

book = x[(Math.random()*x.length)];

}

return book;
}

最佳答案

你解释事情的方式让我觉得有几个概念在某种程度上是交叉的。我假设这本书是 Seat 对象的一些(二维)数组,您想从中随机选择一个。为此,您需要为数组的每个维度指定一个随机选择:

// this should be declared elsewhere because if it's local to bookSeat it will be lost
// and reinitialized upon each call to bookSeat
Seat[][] book = new Seat[12][23];

// and this is how, after previous declaration, the function will be called
Seat theBookedSeat = bookSeat(book);

// Okay, now we have selected a random seat, mark it as booked, assuming Seat has a
// method called book:
theBookedSeat.book();


// and this is the modified function. Note also that function in Java by convention
// start with a lowercase letter.
public static Seat bookSeat(Seat[][] x){
if (x != null){
// using Random as shown by chm052
Random r = new Random();
// need to pick a random one in each dimension
book = x[r.nextInt(x.length)][r.nextInt(x[0].length)];
}
return book;
}

您还应该集成一个测试来检查所选座位是否已被预订并重复选择:

        do {
// need to pick a random one in each dimension
book = x[r.nextInt(x.length)][r.nextInt(x[0].length)];
while (book.isBooked()); // assuming a getter for a boolean indicating
// whether the seat is booked or not

但是像这样的全随机选择有几个缺点:

  1. 选择是随机的,您可能会反复落在已预订的座位上,并且发生这种情况的机会随着已预订座位的数量而增加。但即使预订的座位很少,您也可能会很不走运,看到环路旋转数十次后才到达未预订的座位。
  2. 在进入循环之前,您绝对应该测试是否还有未预订的座位,否则它将无限期地旋转。

因此,实现更智能的选择例程可能是一个好主意,例如,随机选择一排和一个座位,然后从那里开始搜索,直到遇到第一个空闲座位,但对于第一步来说,这个应该做得很好。

我希望这是您想要实现的目标,如果没有,请随时发表评论并允许我纠正和调整。

关于java - 尝试从数组中获取随机元素,以便我可以将其标记为 "booked",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com