草庐IT

java - 在循环的限定比较中使用随机参数时,它是调用一次随机化函数还是每次循环运行时调用?

根据问题,假设您有以下代码:Randomrand=newRandom();for(intk=0;kk是否仅在循环开始运行时与rand.nextInt(10)进行一次比较,以便循环在每个间隔运行的机会均等在0和9之间?或者它是否会在循环的每次迭代中进行比较,从而更有可能出现较低的数字?此外,这是否因语言而异?我的示例是针对Java的,但是大多数语言之间是否存在一个标准? 最佳答案 Doeskgetcomparedtorand.nextInt(10)onlyonce,whentheloopstartsrunning?不,每次检查循环继续

java - 了解 Scanner 的 nextLine()、next() 和 nextInt() 方法

我正在尝试了解这三种方法的工作原理。以下是我对它们的理解:nextLine()读取当前行的剩余部分,即使它是空的。nextInt()读取一个整数但不读取转义序列“\n”。next()读取当前行但不读取“\n”。假设我有以下代码:importjava.util.Scanner;publicclassWelcome2{publicstaticvoidmain(String[]args){Scannerkeyboard=newScanner(System.in);System.out.println("Nextentertwowords:");intn;Strings1,s2;n=keybo

Java 错误 : "incompatible types" message

我在编译期间遇到Java错误:UserID.java:36:error:incompatibletypes+generator.nextInt(10);^required:Stringfound:intJava代码如下:publicclassUserID{privateStringfirstName;privateStringuserId;privateStringpassword;publicUserID(Stringfirst){Randomgenerator=newRandom();userId=first.substring(0,3)++generator.nextInt(1)

java - 这个损坏的 Java Random.nextInt(long) 行为是怎么回事?

我发现当你给它一个2的幂时,这个方法似乎会惨败)和2的幂(互斥)总是相同;种子无所谓。例如:publicstaticvoidmain(String[]args){RandommRandom;for(inti=0;i我随意选择了2^4,但它似乎适用于任何2的幂。这是怎么回事?此外,我该如何避免这种情况? 最佳答案 出现这个问题有两个原因。Random类的相同种子。在nextInt(intn),如果n是2的幂1。Random类的种子相同。因为,您已经使用新的seed值启动了新的Random实例,这会影响nextInt值的生成。根据Ran

java - nextInt() 扫描仪错误

这个问题在这里已经有了答案:Howtousejava.util.ScannertocorrectlyreaduserinputfromSystem.inandactonit?(1个回答)关闭5年前。我正在尝试使用Scanner从键盘获取int,但出现以下错误:Exceptioninthread"main"java.util.NoSuchElementExceptionatjava.util.Scanner.throwFor(Scanner.java:907)atjava.util.Scanner.next(Scanner.java:1530)atjava.util.Scanner.ne

java - 使用java创建一个没有数字重复的4位随机数

我使用java编写了一个代码来创建一个没有重复数字的随机4位数字,我编写的代码如下:-Randomr=newRandom();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){

C#/Java 数字随机化

是否有可能从.NET中模仿Java使用的精确随机化?我有一个种子,我希望在创建随机数时能够在C#和Java中收到相同的结果。 最佳答案 您无需阅读源代码。该公式是单行的,在documentationforjava.util.Random.中给出。这是部分翻译:[Serializable]publicclassRandom{publicRandom(UInt64seed){this.seed=(seed^0x5DEECE66DUL)&((1UL>31);longbits,val;do{bits=Next(31);val=bits%(U

java - Random.nextInt(int) [稍微] 有偏差

即,它永远不会使用某些特定的upperBound参数连续生成超过16个偶数:Randomrandom=newRandom();intc=0;intmax=17;intupperBound=18;while(c在此示例中,代码将永远循环,而当upperBound为16时,它会快速终止。这种行为的原因可能是什么?该方法的javadoc中有一些注释,但我未能理解它们。UPD1:代码似乎以奇数上限终止,但可能卡在偶数上限UPD2:我修改了代码以按照评论中的建议捕获c的统计信息:Randomrandom=newRandom();intc=0;longtrials=10){while(c0){in

java - input.nextInt() 究竟是如何工作的?

这是程序publicclassbInputMismathcExceptionDemo{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);booleancontinueInput=true;do{try{System.out.println("Enteraninteger:");intnum=input.nextInt();System.out.println("thenumberis"+num);continueInput=false;}catch(InputMismatchExceptionex

android - 如何设置随机颜色

这是我的代码的摘录:Color[]color=newColor[3];color[0]=Color.red;color[1]=Color.blue;color[2]=Color.yellow;stage.getBatch().setColor(color[rand.nextInt()]);但是“颜色[rand.nextInt()]);”带有红色下划线。我真的不知道为什么。括号中必须有四个数字或代替“Color.BLUE”,但我想随机给Sprite着色。因此我创建了一个包含三种颜色的数组。我认为只要给他们数字并使用rand.nextInt就可以了。错误是什么?