生成小于9的随机数

时间:2013-10-10 10:57:48

标签: android random

我想在1-8范围内的两个字段中生成随机数,字段和也应小于9 我到目前为止所做的事情

for (int i; i <= 6; i++) {
    fieldOne = rand.nextInt(9 - 5) + 5;
    fieldTwo = rand.nextInt(9 - 5) + 5;
    fieldSum = fieldOne + fieldTwo;
    System.out.print(fieldSum); // should be < 9 and not repetition
}

fieldSum变得大于9,所以如何控制这种情况? 并且序列应该是随机的,不应重复2次或更多次

3 个答案:

答案 0 :(得分:0)

也许试试这个 - &gt; random.nextInt()%9;另一种方法使用random.nextInt(9)获取随机数。

答案 1 :(得分:0)

尝试,

fieldSum =(fieldOne + fieldTwo)%9;

这将是def

答案 2 :(得分:0)

rand.nextInt(9-5)不会计算5到8之间的随机数,它会使操作9减去5,然后计算rand.nextInt(4)

要计算5到8之间的随机数,您必须执行以下操作:

Random r = new Random();
for (int i = 0; i < 10; i++) {

    int rand1 = r.nextInt(4) + 5;

    int rand2 = r.nextInt(4) + 5;

    int result = rand1 + rand2;
    Log.v("", "" + result);
}

问题是结果不能&lt;超过9,因为你要求两个数字=&gt; 5所以你得到的结果就是10。

编辑一个没有重复的解决方案:

private List<Integer> rdmNumList = new ArrayList<Integer>();

private final int leftLimitRange = 1;
private final int rightLimitRange = 10;

private final int numOfIteration = 10;

public void generateNumList() {
    for (int i = leftLimitRange; i <= rightLimitRange; i++) {
        this.rdmNumList.add(num);
    }
}

public int getRandomNumer() {
    Random r = new Random();
    int rNum = r.nextInt(rdmNumList.size());
    int result = this.rdmNumList.get(rNum);
    this.rdmNumList.remove(rNum);
    return result;
}

public void test() {
    this.generateNumList();
    if(this.numOfIteration <= ((this.rightLimitRange - this.leftLimitRange + 1))) {
        for (int i = 0; i < this.numOfIteration; i++) {
            Log.v("Debug Output", String.valueOf(this.getRandomNumer()));
        }
    }  
}

注意:这仅适用于小范围的数字

这段代码有效,但远没有好。您应该自己找一些其他解决方案。 This answer会帮助您找到自己的方式