Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 生成从最小值到最大值的随机整数?_Java_Android_Random - Fatal编程技术网

Java 生成从最小值到最大值的随机整数?

Java 生成从最小值到最大值的随机整数?,java,android,random,Java,Android,Random,我想生成一个随机整数,即: 在[最小值,最大值]范围内 范围可以是[5,20]、-29、-3]或[-13,13](可以在任何范围内,正负或介于两者之间) 该代码在Android中运行良好 到目前为止,我得到的是这个,但它似乎不适用于负范围 1 + (int)(Math.random() * ((Max - Min) + 1)); 我很确定你想要 Min+(int)(Math.random()*((Max-Min) + 1)); 但是,我应该指出,[-3,-29]范围的最小值和最大值是相反的。

我想生成一个随机整数,即:

  • 在[最小值,最大值]范围内
  • 范围可以是[5,20]、-29、-3]或[-13,13](可以在任何范围内,正负或介于两者之间)
  • 该代码在Android中运行良好
  • 到目前为止,我得到的是这个,但它似乎不适用于负范围

    1 + (int)(Math.random() * ((Max - Min) + 1));
    

    我很确定你想要

    Min+(int)(Math.random()*((Max-Min) + 1));
    
    但是,我应该指出,[-3,-29]范围的最小值和最大值是相反的。(正如Merlyn所指出的,[5,-13]也是如此。)

    如果你只想输入任意两个数字,a和b,然后使用代码

    int Min = Math.min(a,b);
    int Max = Math.max(a,b);
    

    这样你就不用担心订单了。这甚至适用于a==b.

    我很确定你想要的

    Min+(int)(Math.random()*((Max-Min) + 1));
    
    但是,我应该指出,[-3,-29]范围的最小值和最大值是相反的。(正如Merlyn所指出的,[5,-13]也是如此。)

    如果你只想输入任意两个数字,a和b,然后使用代码

    int Min = Math.min(a,b);
    int Max = Math.max(a,b);
    
    这样你就不用担心订单了。这甚至适用于a==b。

    试试这个

    int min = -100;
    int max = 100;
    Random rand = new Random();
    return rand.nextInt(max - min + 1) + min;
    
    试试这个

    int min = -100;
    int max = 100;
    Random rand = new Random();
    return rand.nextInt(max - min + 1) + min;
    

    有人提到过他的最小值和最大值是相反的吗?因为这就是把他的密码搞砸的原因

    编辑


    另一件事搞乱了他的代码:它应该是
    Min+
    而不是
    1+

    有人提到过他的Min和max是相反的吗?因为这就是把他的密码搞砸的原因

    /**
     * @param bound1 an inclusive upper or lower bound
     * @param bound2 an inclusive lower or upper bound
     * @return a uniformly distributed pseudo-random number in the range.
     */
    public static int randomInRange(int bound1, int bound2) {
        int min = Math.min(bound1, bound2);
        int max = Math.max(bound1, bound2);
        return min + (int)(Math.random() * (max - min + 1));
    }
    
    编辑

    另一件事搞乱了他的代码:应该是
    Min+
    而不是
    1+

    /**
     * @param bound1 an inclusive upper or lower bound
     * @param bound2 an inclusive lower or upper bound
     * @return a uniformly distributed pseudo-random number in the range.
     */
    public static int randomInRange(int bound1, int bound2) {
        int min = Math.min(bound1, bound2);
        int max = Math.max(bound1, bound2);
        return min + (int)(Math.random() * (max - min + 1));
    }
    

    如果调用方可以保证
    bound1
    小于或等于
    bound2
    ,则可以跳过计算最小和最大边界的步骤;e、 g

    /**
     * @param min the inclusive lower bound
     * @param max the inclusive upper bound
     * @return a uniformly distributed pseudo-random number in the range.
     */
    public static int randomInRange(int min, int max) {
        return min + (int)(Math.random() * (max - min + 1));
    }
    

    我还没有在Android上测试过,但它应该可以在任何Java或类似Java的平台上工作,这些平台支持符合标准(Sun)JavaSE规范的方法


    如果调用方可以保证
    bound1
    小于或等于
    bound2
    ,则可以跳过计算最小和最大边界的步骤;e、 g

    /**
     * @param min the inclusive lower bound
     * @param max the inclusive upper bound
     * @return a uniformly distributed pseudo-random number in the range.
     */
    public static int randomInRange(int min, int max) {
        return min + (int)(Math.random() * (max - min + 1));
    }
    


    我还没有在Android上测试过这个,但是它应该可以在任何Java或类似Java的平台上运行,这些平台支持符合标准(Sun)Java SE规范的方法。

    您只需计算最小值和最大值之间的差值即可 示例-30和30 得到:
    delta您只需计算最小值和最大值之间的差值 示例-30和30 得到:
    delta You[-3,-29]的位置错误,如果你说[Min,Max],我没有否决投票,但是代码仍然不正确,这个修正。另外,
    [5,-13]
    也错了。如果你说[Min,Max],可能重复的你[-3,-29]的位置是错误的,我没有否决投票,但代码仍然不正确。而且,
    [5,-13]
    也错了。可能是好渔获量的重复。我没注意到,接得好。我没有注意到。有人提到过,但不,这并不是把他的代码搞砸的原因。编辑的目的是添加实际有用的建议,而不仅仅是虚张声势。因为这是周末。有人提到过,但不,这并不是把他的代码弄糟的原因。编辑后添加了实际有用的建议,而不仅仅是嘲笑。因为今天是周末。