尝试在 Java 中返回 1 到 42 之间的 5 个随机数。
我目前有返回单个数字的逻辑(将其放入 ArrayList,但我想取消它。)我很难实现返回 5 个随机数。我需要 5 个 for 循环吗?
for (int i = 0; i < 10; i++) {
int r = (int) (Math.random() * 42 + 1);
}
我在这里看到了一些其他相关的例子,它们似乎比我的需要更复杂。但是,我可能是错的。
只需将每个随机数放入一个数组并返回该数组...
public int[] powerBalls() {
int[] balls = new int[5];
for (int index = 0; index < 5; index++) {
balls[index] = (int) (Math.random() * 42) + 1;
}
return balls;
}
您可以使用Set
生成5
唯一随机数。
Random random = new Random();
Set randomNumbers = new HashSet<Integer>();
while(randomNumbers.size()< 5) {
randomNumbers.add(random.nextInt(42)+1);
}
既然您提到您正在使用ArrayList
将保存所有随机数的 an,您可以将 set 中存在的所有元素添加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);
当心!每个号码只能取一次。使用您的解决方案,可以多次获得相同的数字。
其他解决方案(在这里你不能多次使用相同的数字)是创建包含所有数字的数组,将其打乱并取前 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;
}
这是一种直截了当的方法。
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;
}
}
}
试试这样:
IntArray = new int[5]; //Create an array
for (int i = 0; i < 5; i++) {
IntArray[i] = (int) (Math.random() * 42 + 1);
}
将数字存储在数组中并返回该数组。
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"
只需投入 2 美分。我最近制作了一个 jQuery 插件,恰当地命名为“强力球”。我将与您分享我正在使用的公式以及链接您我的插件。不知道为什么有人真的需要这个。我这样做只是为了好玩!哈哈!
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 标签中显示的数字。