Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用双精度格式的数字为范围之间的随机间隔编写代码?_Java_Random_Int_Double_Range - Fatal编程技术网

Java 如何使用双精度格式的数字为范围之间的随机间隔编写代码?

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 =

我正在尝试编写一个使用thread.sleep的程序,它只允许整数。我的问题是如何创建一个程序,在使用2.5-3.5秒范围内的所有数字的同时,使用double获取一个随机数或任意随机范围。我试图用它来创建一个随机的自动点击器,用于理解转换这些数据类型。任何帮助都将不胜感激。谢谢

这是我所有的道歉,如果这还不接近我正在使用我能找到的所有信息来帮助

    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。这不是编程的方式。研究您调用的函数的文档。请不要进行使已发布的答案无效的编辑。编辑已还原。