gpt4 book ai didi

java - [Java]如何随机包含最大值和最小值,同时排除中间的数字

转载 作者:行者123 更新时间:2023-12-01 16:50:53 29 4
gpt4 key购买 nike

我正在尝试创建整数方法,该方法将跟踪某人所在的位置,同时使用 -1 或 1 的随机整数,它将显示我的位置一次。示例(pos = 0、pos = 1、pos = 2、pos = 1 等)。到目前为止,我的最小值和最大值为 -1 到 1,但是我不想包含零,而且我不知道如何摆脱它。另外,是否可以将所有采取的步骤相加?示例:如果将上面的示例全部加起来,则需要执行 3 步(向后和向前每一步都算作一步)我想包括所执行的总步数,但我不知道该怎么做。

import java.util.*;
public class randWalking{
public static int walkingStepsRand(int a){
Random rand = new Random();
int pos = 0;
for(int i = 1; i <= x; i++){
pos = pos + rand.nextInt((1 + 1) + 1) - 1;
System.out.println("Pos: " + pos);
}

return pos;
}



public static void main(String[] args){
randomWalk(5);
}

}

最佳答案

有几种方法可以回答这个问题:

  1. 如何从集合中生成随机项{-1, 1}
  2. 如何从任何给定的集合中生成随机项目
  3. 如何在两个不同的、不重叠的范围内生成随机数。

我会尽力回答这三个问题。

  1. 如何从集合 {-1, 1} 中生成随机项:

    如果您可以从集合 {0,1} 中生成一个数字,则可以很简单地将其转换为 {-1,1} 中的选择 - 乘以该数字乘以 2,并添加 (-1)。例如`random.nextInt(2) * 2 - 1

  2. 如何从任何给定的集合中生成随机项目

    定义一个项目数组,并选择 0..length 之间的随机索引,例如

    int[] choices = {1,5,6,8,9};
    int randomChoice = choices[random.nextInt(choices.length)];
  3. 如何在两个不同的、不重叠的范围内生成随机数。

    有几种方法可以解决这个问题。一种简单的方法是使用随机数决定哪个连续范围,然后生成连续范围内的数字:

    // generate a random number in the integer interval [0, 25) union [75, 100)
    int value = (r.nextInt(2) == 0? r.nextInt(25) : 75 + r.nextInt(25));

    如果间隔具有相同的宽度并且彼此之间的距离相同(如上例所示),您还可以使用:

    int spacingBetweenIntervals = 75;
    int numIntervals = 2;
    int intervalWidth = 25;
    int value = (r.nextInt(numIntervals) * spacingBetweenIntervals) + r.nextInt(intervalWidth);

    或者,您可以在连续范围内操纵结果值,类似于我在选项 1 中提供的内容。

    int value = r.nextInt(50);

    // anything that's 25 and above should be shifted to another interval
    value = value >= 25? value + 75 : value;

我希望这能回答您的问题。

关于java - [Java]如何随机包含最大值和最小值,同时排除中间的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61691645/

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