kak*_*ali 8 java random numbers
我用java创建了一个代码来创建一个没有重复数字的随机4位数字,我写的代码如下: -
Random r = new Random();
d1 = r.nextInt(9);
d2 = r.nextInt(9);
d3 = r.nextInt(9);
d4 = r.nextInt(9);
while(d1==d2||d1==d3||d1==d4||d2==d3||d2==d4||d3==d4)
{
if(d1==d2||d2==d3||d2==d4)
{
d2 = r.nextInt(9);
}
if(d1==d3||d2==d3||d3==d4)
{
d3 = r.nextInt(9);
}
if(d1==d4||d2==d4||d3==d4)
{
d4 = r.nextInt(9);
}
}
System.out.println(d1+""+d2+""+d3+""+d4);
Run Code Online (Sandbox Code Playgroud)
以下是测试用例(由...生成System.out.println(R1+""+R2+""+R3+""+R4);)如下: -
0123 | OK as required
1234 | OK as required
2123 | not OK because 2 is present more than one time
9870 | OK as required
0444 | not OK because 4 is present more than one time
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,如果有更好的方法可以做到这一点.如果我能以某种方式增强它?
Jer*_*vel 17
创建一个从0到9的整数列表,将其洗牌并提取前4个.
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
for(int i = 0; i < 10; i++){
numbers.add(i);
}
Collections.shuffle(numbers);
String result = "";
for(int i = 0; i < 4; i++){
result += numbers.get(i).toString();
}
System.out.println(result);
}
Run Code Online (Sandbox Code Playgroud)
有一些丑陋的字符串到int的对话正在进行,但你明白了.根据您的使用情况,您可以看到所需的内容.
几种方法:
使用Set保持数字并继续添加随机数字,直到该集合中包含四个值.
创建一个值为0-9的数组.对阵列进行随机播放并获取前四个值.
如果性能很重要,您将需要尝试几种不同的方法,看看哪种方法更快.
| 归档时间: |
|
| 查看次数: |
17373 次 |
| 最近记录: |