Java 如何使用双精度格式的数字为范围之间的随机间隔编写代码?
我正在尝试编写一个使用thread.sleep的程序,它只允许整数。我的问题是如何创建一个程序,在使用2.5-3.5秒范围内的所有数字的同时,使用double获取一个随机数或任意随机范围。我试图用它来创建一个随机的自动点击器,用于理解转换这些数据类型。任何帮助都将不胜感激。谢谢 这是我所有的道歉,如果这还不接近我正在使用我能找到的所有信息来帮助Java 如何使用双精度格式的数字为范围之间的随机间隔编写代码?,java,random,int,double,range,Java,Random,Int,Double,Range,我正在尝试编写一个使用thread.sleep的程序,它只允许整数。我的问题是如何创建一个程序,在使用2.5-3.5秒范围内的所有数字的同时,使用double获取一个随机数或任意随机范围。我试图用它来创建一个随机的自动点击器,用于理解转换这些数据类型。任何帮助都将不胜感激。谢谢 这是我所有的道歉,如果这还不接近我正在使用我能找到的所有信息来帮助 Robot bot = new Robot(); int rangeMin=2.5, rangeMax=3.5, pressMax =
Robot bot = new Robot();
int rangeMin=2.5, rangeMax=3.5, pressMax = 0, pressMin = 0;
int randomvalue1 = (r.nextInt() * ((pressMax - pressMin) + 1)) + pressMin;
int randomValue2 = (r.nextInt() * ((rangeMax - rangeMin) + 1)) + rangeMax;
for (int x=0; x<3;x++);
Thread.sleep(randomvalue1);
bot.mousePress(InputEvent.BUTTON1_MASK);
Thread.sleep(randomvalue2);
bot.mouseRelease(InputEvent.BUTTON1_MASK);
}
你的问题是度量单位 您的问题定义约为2.5-3.5秒,您计算随机值1和随机值2以包含秒数 Thread.sleep的参数必须是毫秒数
因此,在将秒数传递给Thread.sleep之前,您需要将秒数转换为毫秒数。您将事情复杂化了 简单地从
int delayInMilliSeconds = 2500;
然后向该变量添加一个介于0和1000之间的随机值
睡眠的时间正好是这个毫秒数
完成了。你有2.5到3.5秒的延迟 来自GhostCat的方法的Java代码示例:
Thread.sleep(2500 + ((int) (Math.random() * 1000)));
另请参阅Java API文档,例如:
成品,固定。它使单击的长度随机,也使每次单击之间的等待时间随机 机器人机器人=新机器人
int rangeMin=2445, rangeMax=3550, pressMax = 100, pressMin = 80;
for (int x=0; x<1620;x++) {
int randomClick = (60+ (int) (Math.random()*100));
int randomValue = (1800+ (int) (Math.random()*1000));
int randomWait = (50+ (int) (Math.random()*100));
Thread.sleep(randomValue);
bot.mousePress(InputEvent.BUTTON1_MASK);
Thread.sleep(randomClick);
bot.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(randomWait);
Thread.sleep(randomValue);
bot.mousePress(InputEvent.BUTTON1_MASK);
Thread.sleep(randomClick);
bot.mouseRelease(InputEvent.BUTTON1_MASK);
System.out.println(randomValue);
System.out.println(randomClick);
System.out.println(randomWait);
很好的回答,关于ms vs seconds的细节,你得到了我的投票。Mike,我在1000年代改变了我的值以读取范围,但当我这样做时,我看到了两个随机值的结果,它变得很大,甚至不接近我试图定义的范围。我可以在randomValue中进行修复,以尝试将其设置到我的范围。我建议在将其传递到Thread.sleep之前,将秒转换为毫秒。我还原的编辑遵循GhostCat的建议,即以毫秒为单位进行计算。如何实现这一点取决于您自己,但您确实应该研究您调用的每个函数的文档。您在调用Thread.sleep时不知道它接受什么类型的参数,然后在不知道它返回什么类型的值的情况下尝试调用Random.nextInt。这不是编程的方式。研究您调用的函数的文档。请不要进行使已发布的答案无效的编辑。编辑已还原。