作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图弄清楚如何在数组中生成和存储 10 个随机数,其中数字是两位数,每个数字在 0-7 的范围内。例如,10、23、35、77都可以,但1、78、89、99就不行。而且,我想确保所有数字都是唯一的。这是我到目前为止所做的...
import java.util.Random;
public class RandomNum{
public static void main(String[] args){
Random rand=new Random();
int[] randomFirstDigit=new int[10];
int[] randomSecondDigit=new int[10];
for(int i=0;i<10;i++){
randomFirstDigit[i]=rand.nextInt(7-1+1)+1;
}
for(int i=0;i<10;i++){
randomSecondDigit[i]=rand.nextInt(7-1+1)+0;
}
int[] randomArr=new int[10];
for(int i=0;i<10;i++){
randomArr[i]=(randomFirstDigit[i]*10)+randomSecondDigit[i];
}
for(int i=0;i<=randomArr.length;i++){
System.out.println(randomArr[i]);
}
}
}
上述代码的主要问题是,有时,数组值不是唯一的。换句话说,两个相同的数字存储在数组中,如 23,23。
谁能帮我解决一下这个问题吗?
预先感谢您的帮助。
最佳答案
所以可能的数字列表是 [10, 11, 12, ..., 17, 20, ..., 76, 77]
它的大小为 7 * 8
。我们需要的是 10 个不同的随机数来表示该列表上的索引,然后我们可以使用 i -> (i / 8 + 1) * 10 + (i % 8)
将它们映射到实际数字。 .
这是一个非常简单的解决方案,使用 ThreadLocalRandom.ints
:
int[] array = ThreadLocalRandom.current()
.ints(0, 7 * 8)
.distinct()
.limit(10)
.map(i -> (i / 8 + 1) * 10 + (i % 8))
.toArray();
关于java - 如何生成每个数字都在数字范围内的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40943416/
我是一名优秀的程序员,十分优秀!