随机数和while循环问题

时间:2016-06-26 06:41:34

标签: java random while-loop

我必须为ArrayList中的52000个实例生成两个随机数,攻击1和攻击2,其中攻击1必须大于攻击2,所以我必须将它们放在列表中。这是我的示例代码:

do {
    atk_p1 = (int) (Math.random() * (5000-500+1)+500);
    atk_p2 = (int) (Math.random() * (5000-500+1)+500);
} while(atk_p1 <= atk_p2);

data.add(String.valueOf(atk_p1));
data.add(String.valueOf(atk_p2));

我的问题是上述代码有时会起作用(因此atk_p1大于atk_p2)但其他时间则不然(因此atk_p2大于atk_p1)。我正在努力解决这个问题。谢谢你的帮助。

上面的代码是Java。

4 个答案:

答案 0 :(得分:2)

另一种方法是生成 package com.selendroid.demo; import org.openqa.selenium.WebDriver; import io.selendroid.SelendroidDriver; import io.selendroid.common.SelendroidCapabilities; import io.selendroid.common.device.DeviceTargetPlatform; import io.selendroid.standalone.SelendroidConfiguration; import io.selendroid.standalone.SelendroidLauncher; public class Sele { private WebDriver driver; public void setUp() throws Exception { System.out.println("------------------------Started"); SelendroidConfiguration config = new SelendroidConfiguration(); // Add the selendroid-test-app to the standalone server config.addSupportedApp("Demo.apk"); // start the standalone server SelendroidLauncher selendroidServer = new SelendroidLauncher(config); selendroidServer.launchSelendroid(); // Create the selendroid capabilities SelendroidCapabilities capa = new SelendroidCapabilities( "io.selendroid.androiddriver:0.16.0"); capa.setAut("com.example.demo:1.0"); capa.setPlatformVersion(DeviceTargetPlatform.ANDROID15); // capa.setEmulator(false); // capa.setCapability(SelendroidCapabilities.EMULATOR, true); // capa.setSerial("emulator-5554"); SelendroidDriver driver = new SelendroidDriver(capa); capa.wait(100); driver = new SelendroidDriver(capa); } } a,然后进行简单的比较检查,看看b是否小于b

如果不是,您只需交换aa

答案 1 :(得分:0)

如果您要生成两个随机数,@IBDesignableUIView,那么UIBarButtonItem,那么

  1. 生成UIView
  2. 生成ab加上大于零的随机数。
  3. 编辑:这是错的,我承认。见下面的评论。 Mea culpa。

答案 2 :(得分:0)

我只会生成第二个随机数,第一个是它的上限:

atk_p1 = (int) (Math.random() * (5000-500+1)+501);
atk_p2 = (int) (Math.random() * (atk_p1)+500);

data.add(String.valueOf(atk_p1));
data.add(String.valueOf(atk_p2));

答案 3 :(得分:0)

我这样解决了:

   int atk_p1 = 0;
   int atk_p2 = 0;

   data.add(String.valueOf(atk_p1));
   data.add(String.valueOf(atk_p2));

   do{
    atk_p1 = (int) (Math.random() * (5000-500+1)+500);
    atk_p2 = (int) (Math.random() * (5000-500+1)+500);
   }while(atk_p1 == atk_p2);


  if(atk_p1 > atk_p2){
    data.set(34, String.valueOf(atk_p1));
    data.set(36, String.valueOf(atk_p2));
  }else{
    data.set(34, String.valueOf(atk_p2));
    data.set(36, String.valueOf(atk_p1));
  }

问题是arraylist.add()操作,它对指令的顺序顺序并不严格。使用索引来指定信息的工作位置。