如何在Java中返回5个随机的“Powerball”数字

时间:2013-04-10 04:08:24

标签: java random for-loop

尝试在Java中返回1到42之间的5个随机数。

我目前有逻辑来返回一个数字(把它放到一个ArrayList中,但我想废除它。)我很难实现返回5个随机数。我需要5个for循环吗?

    for (int i = 0; i < 10; i++) {
        int r = (int) (Math.random() * 42 + 1);
    }

我在这里看到了一些其他相关的例子,它们似乎比我的需要更复杂。但是,我可能是错的。

7 个答案:

答案 0 :(得分:2)

只需将每个随机数放入数组并返回数组......

public int[] powerBalls() {
     int[] balls = new int[5];
     for (int index = 0; index < 5; index++) {
          balls[index] = (int) (Math.random() * 42) + 1;
     }
     return balls;
}

答案 1 :(得分:2)

您可以使用Set生成5 唯一随机数字。

Random random = new Random();
Set randomNumbers = new HashSet<Integer>();
while(randomNumbers.size()< 5) {
    randomNumbers.add(random.nextInt(42)+1);
}

由于您之前提到过您使用的ArrayList会保留所有随机数,因此您只需将randomNumbers集中的所有元素添加到ArrayList即可。

<强>更新: -

为了满足您的需求,您需要执行以下操作: -

Random random = new Random();
Set<String> set = new HashSet<String>();
while(set.size()< 5) {
    set.add(String.valueOf(random.nextInt(42)+1));
}
fortuneList3.addAll(set);

答案 2 :(得分:1)

小心!每个号码只能进行一次。使用您的解决方案,可以多次获得相同的数字。

其他解决方案(在这里你不能有多次使用同一个数字)是创建包含所有数字的数组,将其洗牌并先取5:

public int[] powerBalls() {
  // create array with all numbers
  List<Integer> balls = new ArrayList<Integer>(42);
  for (int i = 1; i <= 42; i++)
    balls.add(i);

  // shuffle
  Collections.shuffle(balls);

  // take first 5
  int[] result = new int[5];
  for (int i = 0; i < 5; i++)
    result[i] = balls.get(i);

  return result;
}

答案 3 :(得分:0)

试试这样:

IntArray = new int[5]; //Create an array
for (int i = 0; i < 5; i++) {
        IntArray[i] = (int) (Math.random() * 42 + 1);
}

答案 4 :(得分:0)

将数字存储在数组中并返回该数组。

int []randArray;
randArray = new int[5];

for (int i = 0; i < 5; i++) { //for 5 random numbers
        randArray[i] = (int) (Math.random() * 42 + 1);
    }

//now return this array "randArray"

答案 5 :(得分:0)

这是一种直接的方法。

   List<Integer> generated = new ArrayList<Integer>();
          for (int i = 0; i < 5; i++)
          {
              while(true)
              {
                 int r = (int) (Math.random() * 42 + 1);
                  if (!generated.contains(r))
                  {            
                      generated.add(r);
                      break;
                  }
              }
          }

答案 6 :(得分:0)

我只花了2美分。我最近制作了一个jQuery插件,恰当地命名为“Powerball”。我将与你分享我正在使用的公式以及链接你的插件。不知道为什么有人真的需要这个。我这样做只是为了好玩!大声笑!

功能

function getNumbers() {
    var a=[];   //  array to return
    for(i=1;5>=i;i++){  //  for loop to get first 5 numbers
        var b = Math.floor(Math.random()*59)+1; //  set #
        while (a.indexOf(b) > -1) { b = Math.floor(Math.random()*59)+1; }   //  reset # if already used
        a.push(b);  //  add number to array
    }
    a.push(Math.floor(35*Math.random())+1); //  add ball 6 number
    return a;   //  0 index array will have a length of 6, [0-4] being whiteball numbers, [5] being the red ball
}

插件

jsFiddle

  • 包含评论行之间的插件
  • 显示示例使用

使用就像$("element").powerball()一样简单。但是,目前只存在一种方法$("element").powerball("setNumbers")。该方法只是重置p标签中显示的数字。

  • 风格:一张纸条!
    • 所有样式都是通过初始化时添加到标题的样式标记完成的。这意味着不需要添加额外的文件,但它也提供了自定义样式的简易性。在jsFiddle
    • 中查看有关样式的更多信息