gpt4 book ai didi

java - 随机函数无法按我的意愿工作

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

我正在尝试制作一个吃 bean 人,所以我使用了一个数组[8][8],其中我有一个吃 bean 人、2 个幽灵、墙壁和吃 bean 人可以吃的点。当吃 bean 人吃掉点数时,你就会开始出现空位。

所以我决定创建一个随机函数,随机将水果仅分配给空白空间,但问题是,随着空白空间的增加,水果开始变得疯狂并出现在我的数组中。尽管我有空位,但我希望始终有相同的机会获得水果。

以下是我使用的方法,请帮忙。

 public void AppearFruit()
{
for(int i= 0; i<_world.length; i++){
for(int j= 0; j<_world.length; j++){
Random as = new Random();
int fru = as.nextInt(20);
if(fru==10){
if(_world[i][j] instanceof Empty){
_world[i][j] = new Fruit(i,j);
}
}
}
}
}

public void DisappearFruit()
{

for(int i= 0; i<_world.length; i++){
for(int j= 0; j<_world.length; j++){
if (_world[i][j] instanceof Fruit){
if(contfru>=3) {
_mundo[i][j] = new Empty(i,j);
contfru=0;
}
}
}
}
}

最佳答案

这取决于你所说的“获得水果的相同机会”是什么意思。

你现在所拥有的将独立地给予每个空白空间二十分之一的机会获得水果。因此,如果您有一个包含 2-300 个空白空间的大网格,则每次 AppearFruit 运行时您预计会获得 10-15 个水果。

我不知道 DisappearFruit 中的 contfru 变量是什么,但我想它不会以接近这个速度的任何地方摆脱水果 - 所以结束随着时间的推移,会出现越来越多的果实。

编辑:更新后,您需要

the same chances of getting fruits despite of the empty spaces i have

根据定义,这意味着您当前的方法根本不起作用,因为您为每个空间提供了获得水果的平等机会。将空位数量加倍将使您获得的水果数量加倍(平均)。

听起来你想要的东西更像是一种添加一个水果的方法,它扫描空白数组并将水果随机分配给其中一个空格。然后你可以调整调用这个方法的频率 - 也许它每 50 回合发生一次,也许每 30 + rnd(40) 回合发生一次,也许每 60 秒发生一次,等等。你可以调整多少水果的出现(以及出现的速度)取决于调用的频率。

关于java - 随机函数无法按我的意愿工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9257212/

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