簡體   English   中英

[Java]如何隨機包含最大值和最小值,同時排除中間的數字

[英][Java]How to include a max and min on random while excluding a number in the middle

我正在嘗試創建 integer 方法,該方法將跟蹤 position 的位置,同時使用 -1 或 1 的隨機整數,它將顯示我的 position 次。 示例(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;

我希望這回答了你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM