2015-11-05 40 views
3
/*This is my function code*/ 
Random random = new Random(); 
int randomInt = random.nextInt()%200; 

String imgName = "img" + randomInt; 

int ImageId = getResources().getIndentifier(imgName,"drawabale",getPackageName()); 
myImage.setImageResourse(ImageId); 

以前在我的绘制文件夹中有我每次调用随机函数时使用IMG1,IMG2已经插入 200图像..... img199 像命名... 下面提到生成一个 随机数并形成从 “img”和一些数字开始的字符串名称。但大多数时候只有0是由随机函数生成的,ID设置为 图像不断地显示第0个图像。在某些点上它成功显示其他图像,但大部分时间它连续生成零值。零值产生用无数个随机函数()

在此先感谢!

+0

也许检查:http://stackoverflow.com/questions/5533191/java-random-always-returns-the-same-number-when-i-set-the-seed 我想你需要分享随机()实例遍历整个类。 – quangson91

回答

5

您可以生成特定范围

Random r = new Random(); 
int randomInt = r.nextInt(maxVal - minVal) + minVal 

随机数对于示例

int randomInt = r.nextInt(200 - 1) + 1 

将产生1之间的数字以199

+0

它的工作..感谢 – Kamalakar

+0

@ FrankN.Stein不明白。根据[doc](http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt%28int%29)r.nextInt(index)将生成值0(含) )和指定值(不包括)。因此对于索引199,它将在0到198之间生成,+1表示1到199.这是不是真的? –

+0

对,忽略了你的答案。 –

0

通过nextInt产生的随机数应该是一个随机选取200的倍数,即每200左右。该测试表明,这是正常发生的事情:

public void test() { 
    Random random = new Random(); 
    final int tests = 200000; 
    int twoHunderdIsAFactor = 0; 

    for (int i = 0; i < tests; i++) { 
     if (random.nextInt() % 200 == 0) { 
      twoHunderdIsAFactor += 1; 
     } 
    } 
    System.out.println("Tests = " + tests + " Hits = " + twoHunderdIsAFactor + " Proportion = " + (tests/twoHunderdIsAFactor)); 
} 

打印Tests = 200000 Hits = 1012 Proportion = 197 - 即大约200200000随机量。

在其他答案中处理在特定范围内生成随机数。