rei*_*ley 2 java random algorithm
我有一个生成随机数的函数'generateRan'.此功能无法更改.
int generateRan() {
Random num = new Random();
return (1 + num.nextInt(100));
}
Run Code Online (Sandbox Code Playgroud)
我必须编写以下代码:
每个号码只能打印一次.
该功能可以使用任意次.但它有点沉重,所以我想让代码更加优化.
这是我编码的内容:
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList();
Test t = new Test();
iniList(list, 20);
for (Integer i = ((t.generateRan()) % 20); list.size() > 0; i = 1+((t
.generateRan()) % 20)) {
if (list.contains(i.toString())) {
list.remove(i.toString());
System.out.println(i);
}
}
System.out.println("********");
iniList(list, 200);
for (Integer i = ((t.generateRan()%2)*100 + t.generateRan()) ; list.size() > 0; i = ((t.generateRan()%2)*100 + t.generateRan())) {
if (list.contains(i.toString())) {
list.remove(i.toString());
System.out.println(i);
}
}
}
private static void iniList(List list, int i) {
for (Integer k = 1; k <= i; k++) {
list.add(k.toString());
}
}
int generateRan() {
Random num = new Random();
return (1 + num.nextInt(100));
}
}
Run Code Online (Sandbox Code Playgroud)
目前1-200的代码不正确.
每个数字只能打印一次
然后您需要创建一个List<Integer>整个范围,然后调用Collections.shuffle.
private static void displayNumbers(int minInclusive, int maxInclusive) {
List<Integer> list = new ArrayList<Integer>();
for (int i = minInclusive; i <= maxInclusive; i++) {
list.add(i);
}
Collections.shuffle(list);
for (int value : list) {
System.out.println(value);
}
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我通常使用minInclusive, maxExclusive或的参数minInclusive, count,但看起来它可能更适合你的情况.
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |