尝试在Java中返回1到42之间的5个随机数。
我目前有逻辑来返回一个数字(把它放到一个ArrayList中,但我想废除它。)我很难实现返回5个随机数。我需要5个for循环吗?
for (int i = 0; i < 10; i++) {
int r = (int) (Math.random() * 42 + 1);
}
我在这里看到了一些其他相关的例子,它们似乎比我的需要更复杂。但是,我可能是错的。
答案 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
}
使用就像$("element").powerball()
一样简单。但是,目前只存在一种方法$("element").powerball("setNumbers")
。该方法只是重置p标签中显示的数字。