Java中如何排除随机数中的数字
所以我会得到一个介于1到9999之间的随机数,但我想排除111133344447777,这是使用while循环吗Java中如何排除随机数中的数字,java,loops,random,while-loop,Java,Loops,Random,While Loop,所以我会得到一个介于1到9999之间的随机数,但我想排除111133344447777,这是使用while循环吗 Random r = new Random(); int x = r.nextInt(9999); while (x == 1111 || x==3333){ x = r.nextInt(9999) + 1; } 是的,在这种情况下,while意味着它将继续处理一个新的随机数,直到它与代码上的1111或3333不同 你的代码没有问题,只是一些小问题 1-确定您的就诊时
Random r = new Random();
int x = r.nextInt(9999);
while (x == 1111 || x==3333){
x = r.nextInt(9999) + 1;
}
是的,在这种情况下,
while
意味着它将继续处理一个新的随机数,直到它与代码上的1111或3333不同
你的代码没有问题,只是一些小问题
1-确定您的就诊时间:
while (x == 1111 || x == 3333 || x == 4444 || x == 7777)
2-方法nextInt
处理从0(含)到给定数字的随机数,如Javadocs所述(感谢@user3437460):
返回一个伪随机、均匀分布的{@code int}值,该值从该随机数生成器的序列中提取,介于0(包含)和指定值(排除)之间
因此:
你的解决方案很好。您也可以使用do while循环。这样它将首先生成一个随机数,然后进行检查
Random rnd = new Random();
int x=0;
do{
x = rnd.nextInt(9999)+1;
}while(x==1111 || x==3333 || x==4444 || x==7777);
你不能在…之前声明x。。。这个代码不起作用。您需要检查
random
不清楚您在问什么!请编辑您的问题,使其包含您想要的内容?@kappa如果下面的解决方案解决了您的问题,您可以通过单击解决方案旁边的空心勾号来接受该解决方案。您将获得2个代表积分作为回报。r.nextInt(9999)将生成0-9998。你确定你的答案是正确的吗?但是当(x==1111 | | x==3333 | | x==4444 | | x==7777){x=r.nextInt(9999)}仍然有机会得到1111时,你可以使用do{…}while(..);这将删除重复的r.nextInt(9999)+1 Yes@Thierry!您应该添加您的建议作为答案!我很乐意投赞成票,因为这将是一个比我的建议更好的建议:)@user3437460是的,现在就意识到这一点!0 != 1再次感谢。@kappa但是当(x==1111 | | x==3333 | | x==4444 | | x==7777){x=r.nextInt(9999)}
代码将起作用。您可以从1-9测试它,并排除1,3,4,7。
Random rnd = new Random();
int x=0;
do{
x = rnd.nextInt(9999)+1;
}while(x==1111 || x==3333 || x==4444 || x==7777);