Java 需要2个不生成相同整数的整数生成器
如何使2个随机整数生成器不生成相同的整数?假设程序运行,我的示例类如下。谢谢你的帮助Java 需要2个不生成相同整数的整数生成器,java,random,Java,Random,如何使2个随机整数生成器不生成相同的整数?假设程序运行,我的示例类如下。谢谢你的帮助 public class TestRandom{ int num; public TestRandom(){ num = 0; } public TestRandom(int x){ num = x; } public String toString(){ String print; if (nu
public class TestRandom{
int num;
public TestRandom(){
num = 0;
}
public TestRandom(int x){
num = x;
}
public String toString(){
String print;
if (num == 1)
print = "1";
else if(num == 2)
print = "2";
else
print = "---";
return print;
}
}
public class Test{
TestRandom[] s= new TestRandom[20];
Random ran = new Random();
public void setArray(){
for(int i=0; i<s.length; i++)
s[i] = new TestRandom();
for(int k=0; k<4; k++)
int RandomNum = ran.nextInt(s.length);
s[RandomNum] = new TestRandom(1);
for(int e=0; e<4; e++)
int RandomNum = ran.nextInt(s.length);
s.[RandomNum] = new TestRandom(2);
}
}
公共类TestRandom{
int-num;
公共TestRandom(){
num=0;
}
公共TestRandom(intx){
num=x;
}
公共字符串toString(){
字符串打印;
如果(num==1)
print=“1”;
else if(num==2)
print=“2”;
其他的
print=“--”;
返回打印;
}
}
公开课考试{
TestRandom[]s=新的TestRandom[20];
Random ran=新的Random();
公共void setArray(){
对于(inti=0;i试试这个
import java.util.Random;
public class TestRandom{
int num=0;
int num2=0;
Random ran = new Random();
num = ran.nextInt();
num2 = ran.nextInt();
System.out.print(num+" "+num2);
}
如果你让两个生成器生成的不是同一个数,那么它就不是随机的
如果您仍然想要该功能,请使用单个实例,并且如果生成的第二个数字与前一个相同,请生成另一个数字
请注意,随机性和唯一性实际上并不同时存在。将生成的每个int添加到一个集合中
检查生成的每个int,查看该int是否存在于集合中
如果是,则生成一个新的int
e、 g
公共类测试{
TestRandom[]s=新的TestRandom[20];
Random ran=新的Random();
公共void setArray(){
对于(int i=0;i1),对代码块使用一致的逻辑缩进。代码缩进旨在帮助人们理解程序流程。2)为了早日得到更好的帮助,我修改了一点你的格式。请考虑在将来做些类似的事情。这样我们就可以轻松地处理你的代码了。谢谢你帮我格式化。我会记住它以备将来的引用。那个代码是如何执行“不生成同一个整数”的。?它可能会生成相同的整数。我只是给出一个想法,让Phong思考如何使整数在“评论或回答”的滑动比例中不相同。我认为这更适合“评论”,因为它无法解决老年退休金问题的一个重要部分。当然,你还没有足够的代表发表评论,但请耐心。即使这是我的专业建议编程技巧,谢谢你的回答。User217
public class Test{
TestRandom[] s= new TestRandom[20];
Random ran = new Random();
public void setArray(){
for(int i=0; i<s.length; i++)
s[i] = new TestRandom();
HashSet<Integer> usedInts = new HashSet<Integer>();
for(int k=0; k<4; k++) {
int RandomNum;
do {
RandomNum = ran.nextInt(s.length);
} while (!usedInts.add(RandomNum)); // loop until RandomNum not duplicated
s[RandomNum] = new TestRandom(1);
}
for(int e=0; e<4; e++) {
int RandomNum;
do {
RandomNum = ran.nextInt(s.length);
} while (!usedInts.add(RandomNum)); // loop until RandomNum not duplicated
s.[RandomNum] = new TestRandom(2);
}
}