【问题标题】:How do I create a random integer that changes with each x value in a for loop in Java?如何在Java的for循环中创建一个随x值变化的随机整数?
【发布时间】:2017-02-18 03:57:34
【问题描述】:

有没有办法使如果 randNumber 的输出低于 75,则 randNumber 的输出将变为低于 85 的数字?就像随机数生成器选择 75 作为第一个数字一样,有一种方法可以将之后其余输出的值更改为低于 85(现在设置的值)。

public static void Hypothetical() {
    int x;

    for (x = 0; x <= 4; x++) {
    Random z = new Random();
    int zNumber = z.nextInt(10-5) + 5;
    Random rand = new Random();
    int randNumber = rand.nextInt(85-65) + 65;
        if (x  == 0) {
            System.out.println("You may begin running.");
            //TimeUnit.SECONDS.(2);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        if (x == 1 ) {
            System.out.println("Your first lap was made in " + randNumber + " seconds");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        if (x==2) {
            System.out.println("Your second lap was made in " + (randNumber + zNumber) + " seconds");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        if (x==3) {
            System.out.println("Your third lap was made in " + (randNumber + zNumber) + " seconds");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        if (x==4) {
            System.out.println("Your final lap was made in " + (randNumber + zNumber) + " seconds");
        }
    }
}

}

【问题讨论】:

  • 你不能在循环内重新生成/重新分配 zNumber 和 randNumber 吗?
  • 您是否真的需要每次都不同的数字,或者如果它们大部分时间都不同也可以吗?如果您要使用rand.nextInt(20) 生成一个随机数序列,那么任何数字都有 1/20 的机会与前一个数字相同。如果您想确保它们都不同,则需要不同的算法。
  • 请不要通过编辑来完全重写这样的问题,因为这会使其他人已经写过的 cmets 和答案看起来很愚蠢。最好删除并提出一个新问题。但是,目前还不清楚您要完成什么。

标签: java for-loop random


【解决方案1】:
cond = false;
loop
    if (cond)
        generate values lower than 85
    else
        generate number
        if number < 75, cond = true

【讨论】:

    【解决方案2】:

    据我了解,您想更改随机数的上限。我能想到的最简单的方法是引入模上限,如下所示。虽然,我不确定你想做什么。

    limitRanInt = false
    loop
     if( limitRanInt || <rand#> <= 75){
       limitRanInt = true
       <rand#> = <rand#> % 85
       }
    endloop
    

    【讨论】:

    • 首先,这个问题被标记为“java”,我不知道你用什么语言回答。但无论如何,我认为模数不适合答案。他生成的随机数已经低于 85,所以模没有任何作用。但是如果你生成一个从 1 到 85 的随机数,然后你想限制它为 75,如果使用 % 75,结果将不会均匀分布——你将获得两倍于数字的机会0..9 范围。
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 2020-12-16
    • 2013-10-11
    • 2018-01-20
    • 2017-10-14
    • 1970-01-01
    • 2020-08-03
    • 2017-06-10
    相关资源
    最近更新 更多