有没有办法让Math.random返回一个整数?

时间:2014-05-23 13:43:45

标签: java bubble-sort

我正在制作一个Bubblesort,它应该随机抽取一些数字然后返回它们,但我仍然可能会失去精确度#39;编译时出错告诉我Math.random返回一个double,我需要一个整数。我怎么能隐瞒这个?

 public class Bubblesort {

  public static void main(String[] args) {

    //create an int array we want to sort using bubble sort algorithm
    int intArray[] = new int [Math.random()*100];

以下是我的代码以防万一。

编辑:涉及的代码更多,我认为我不需要包含这些代码。我尝试过投射,但System.out.println现在还没有工作。

其余代码:

 public static void main(String[] args) {

    //create an int array we want to sort using bubble sort algorithm
    int intArray[] = new int [(int)Math.random()*100];

    //int intArray[] = new int [100];

    //print array before sorting using bubble sort algorithm
    System.out.println("Array Before Bubble Sort");
    for(int i=0; i < intArray.length; i++){
      System.out.print(intArray[i] + " ");
    }

    //sort an array using bubble sort algorithm
    bubbleSort(intArray);

    System.out.println("");

    //print array after sorting using bubble sort algorithm
    System.out.println("Array After Bubble Sort");
    for(int i=0; i < intArray.length; i++){
      System.out.print(intArray[i] + " ");
    }

8 个答案:

答案 0 :(得分:6)

不要忘记在向下转换为int之前将其括在括号中,否则它将转换为零,因为Math.random()会返回double具有正号的值,大于或等于0.0且小于1.0。

int intArray[] = new int [(int)(Math.random()*100)];

答案 1 :(得分:6)

替代类型转换,您只需使用Random

Random r = new Random();
int retval = r.nextInt(100);

答案 2 :(得分:3)

使用带有nextInt(int n)

的java.util.Random
Random random = new Random()
int intArray[] = new int [random.nextInt(100)];

来自nextInt(int n)的随机javadoc:

返回从此随机数生成器序列中提取的伪随机,均匀分布的int值,介于0(包括)和指定值(不包括)之间。

答案 3 :(得分:2)

您可以输入演员

int intArray[] = new int [(int)(Math.random()*100)];

答案 4 :(得分:0)

有一种叫做cast的方法。

new int [(int) Math.random()*100];

它将返回值转换为转换方法中使用的数据类型。

答案 5 :(得分:0)

试试这个,

int randomWithRange(int min, int max){

       int range = (max - min) + 1;     
       return (int)(Math.random() * range) + min;
}

答案 6 :(得分:0)

只是为了澄清:您正在创建一个随机长度而非随机值的数组。这是为了吗?

如果不是:

int intArray[] = new int [somesize];
for(int i=0;i<intArrey.length();i++)
{
  intArrey[i]= (int)(Math.random()*100);
}

答案 7 :(得分:-1)

创建随机整数i的正确方法是:

Double d = Math.random()*100;
int i = d.intValue();
相关问题