Java:如何生成大于x的随机数,没有最大值?

Java:如何生成大于x的随机数,没有最大值?,java,math,random,Java,Math,Random,我只想生成一个大于x的随机数,没有最大值,然后用它进行运算。我一直在寻找我问题的答案,但没有一个与我的问题相匹配:它们指的是具有最小值和最大值的限制。我想要一个简单的代码,就像: Random number = new Random(); int x = 0; //the minimum value int finalNumber;//any positive random number, in this case; if, for example, x were 2, some number

我只想生成一个大于x的随机数,没有最大值,然后用它进行运算。我一直在寻找我问题的答案,但没有一个与我的问题相匹配:它们指的是具有最小值和最大值的限制。我想要一个简单的代码,就像:

Random number = new Random();
int x = 0; //the minimum value
int finalNumber;//any positive random number, in this case; if, for example, x were 2, some number bigger than 2.
我怎样才能得到最终号码


感谢您花时间回复,我将非常感谢

由于信息存储在有限字节中,因此在任何情况下都无法生成“无最大值”的数字

因此,假设您将其限制为
Integer.MAX\u VALUE
,那么您可以在
[0,Integer.MAX\u VALUE-minimum]
中生成一个数字,然后将最小值添加到结果中

例如:


请注意,这是排他性的,因为
nextInt(int)
contract指定排除上限。这要求最小值为正。

因为信息存储在有限字节中,所以在任何情况下都不能生成“无最大值”的数字

因此,假设您将其限制为
Integer.MAX\u VALUE
,那么您可以在
[0,Integer.MAX\u VALUE-minimum]
中生成一个数字,然后将最小值添加到结果中

例如:


请注意,这是排他性的,因为
nextInt(int)
contract指定排除上限。这需要
最小值
为正。

为什么不使用自己的类/实用程序方法(比如MyMath.Random())来包装它呢

public class MyMath{
   public static int Random()
   {
      final int MIN = 0;
      final int MAX = Integer.MAX_VALUE;
      return (int)(Math.random() * MAX);
   }
   /// overload so you can specify min value
   public static int Random(in MIN)
   {
      final int MAX = Integer.MAX_VALUE;
      return (int)(Math.random() * (MAX-MIN));
   }
}
您可以参考Java文档中的Integer.MAX_值

这样你就可以做到:

intsomeint=MyMath.Random()


int x=123;

int-someInt=MyMath.Random(x)

为什么不使用您自己的类/实用程序方法(比如MyMath.Random())来包装它呢

public class MyMath{
   public static int Random()
   {
      final int MIN = 0;
      final int MAX = Integer.MAX_VALUE;
      return (int)(Math.random() * MAX);
   }
   /// overload so you can specify min value
   public static int Random(in MIN)
   {
      final int MAX = Integer.MAX_VALUE;
      return (int)(Math.random() * (MAX-MIN));
   }
}
您可以参考Java文档中的Integer.MAX_值

这样你就可以做到:

intsomeint=MyMath.Random()


int x=123;
int-someInt=MyMath.Random(x)

尝试以下操作:

if(x>0){
返回值(int)(Math.random()*(Integer.MAX_VALUE-x))+x;
}

试试这个:

if(x>0){
返回值(int)(Math.random()*(Integer.MAX_VALUE-x))+x;

}

因为
finalNumber
是一个
int
所以有一个固有的最大数,它是
整数。MAX_值
(2147483647)。x和无穷大之间的随机数必须是无穷大的一半。事实上,你有0的概率得到一个不是无穷大的数字。考虑到2以上有多少个数字,你可以用99.9999999…%的确定度得到一个大于宇宙中原子数的数字;)由于
finalNumber
是一个
int
数,因此存在一个固有的最大数,即
整数。MAX_值
(2147483647)。x和无穷大之间的随机数必须平均为无穷大的一半。事实上,你有0的概率得到一个不是无穷大的数字。考虑到2以上有多少个数字,你可以用99.9999999…%的确定度得到一个大于宇宙中原子数的数字;)也许值得一提的是,这是因为最小值是正的,否则你就有溢出的风险。也许值得一提的是,这是因为最小值是正的,否则你就有溢出的风险。如果最小值是整数,最大值是整数,那么最小值就没有物理方法了,谢谢@Deltharis,我只是想让代码能够指定除整数常量之外的最大值。但是为了与这个问题保持一致,我更新了我的答案,使用了整数常量。如果MIN是int,MAX是Integer.MAX_值,那么就没有物理方法MIN感谢@Deltharis,只是我正朝着能够指定除整数常量之外的MAX值的代码的方向发展。但是为了与这个问题保持一致,我更新了我的答案,使用整数常量。