在循环中将变量与随机数相加

Posted

技术标签:

【中文标题】在循环中将变量与随机数相加【英文标题】:Sum a variable with a random number in the loop 【发布时间】:2021-01-03 19:03:05 【问题描述】:

我正在生成一个介于 1 和 6 之间的随机数。我有一个值为 0 的整数值(int number1 = 0;)。我需要循环添加它们。循环的每一轮随机数将再次生成并添加到先前的总和之上。如何用 JAVA(控制台)编写代码。

将持续到总和为 100

int number1 = 0;
int number2 = (int) (Math.random () * 6 + 1);

例如:如果 number2 来 3 number1 (0) + number2 (3) = 3 如果 number2 来 4 number1 (3) + number2 (4) = 7 则下一次巡演

【问题讨论】:

int sum = 0; for(int i = 0; i < maxIter; i++) sum+=(int) (Math.random () * 6 + 1); return sum; 【参考方案1】:

WHILE 循环

int number1 = 0;
int loop = 6;

while (loop > 0)
    number1 += (int) (Math.random () * 6 + 1);
    loop--;
       

FOR 循环

int number1 = 0;
int loop = 6;

for (int i = 0; i < loop; i++)
    number1 += (int) (Math.random() * 6 + 1);

【讨论】:

【参考方案2】:

有很多方法可以做到这一点。一种简单的方法是使用无限循环,当number1 == 100 时可以中断该循环。添加随机数后检查if (number1 &gt; 100) 也很重要,如果是true,则删除该随机数。

public class Main 
    public static void main(String[] args) 
        int number1 = 0;
        while (true) 
            System.out.println("Current value: " + number1);
            if (number1 == 100) 
                break;
            
            int random = (int) (Math.random() * 6 + 1);
            number1 += random;
            if (number1 > 100) 
                number1 -= random;
            
        
    

示例运行:

Current value: 0
Current value: 4
Current value: 9
Current value: 13
Current value: 19
Current value: 24
Current value: 29
Current value: 35
Current value: 39
Current value: 43
Current value: 48
Current value: 51
Current value: 57
Current value: 58
Current value: 62
Current value: 66
Current value: 70
Current value: 74
Current value: 79
Current value: 85
Current value: 88
Current value: 93
Current value: 97
Current value: 97
Current value: 98
Current value: 98
Current value: 100

为避免将生成的随机数转换为int,我建议您使用Random#nextInt(int bound),如下所示:

import java.util.Random;

public class Main 
    public static void main(String[] args) 
        int number1 = 0;
        Random rand = new Random();
        while (true) 
            System.out.println("Current value: " + number1);
            if (number1 == 100) 
                break;
            
            int random = rand.nextInt(6) + 1;
            number1 += random;
            if (number1 > 100) 
                number1 -= random;
            
        
    

【讨论】:

谢谢,多亏了你,我学会了如何做。【参考方案3】:

一个简单的 for 循环就可以了。您没有指定何时结束,所以这里有一个运行 10 次迭代的示例:

int number1 = 0;
for(int i = 0; i < 10; ++i) 
    number1 += (int)(Math.random() * 6 + 1);

您也可以使用随机:

int number1 = 0;
Random random = new Random();
for(int i = 0; i < 10; ++i) 
    number1 += random.nextInt(6) + 1;

【讨论】:

【参考方案4】:

方法 1 - 使用 do-while 循环

int sum =0;
do
    sum += (int) (Math.random () * 6 + 1);
  while(sum < 100);
System.out.println("Sum = " + sum);

方法 2 - 使用 while 循环

int sum =0;
while(sum < 100)
     sum += (int) (Math.random () * 6 + 1);

System.out.println("Sum = " + sum);

方法 3 - 使用 for 循环

int sum;
for(sum = 0; sum < 100;)
    sum += (int) (Math.random () * 6 + 1);

System.out.println("Sum = " + sum);

【讨论】:

【参考方案5】:

您可以只用一个变量编写一个更简单的解决方案:

for(int i = 0; i <= 6)
    number += (int) (Math.random () * 6 + 1);

【讨论】:

以上是关于在循环中将变量与随机数相加的主要内容,如果未能解决你的问题,请参考以下文章

JMETER 使用随机变量

在所有线程中使用相同的随机变量

求大神,c语言大神,一段程序说的啥意思,全局变量等于0怎么循环下面的

在while循环中将布尔值更改为true? C++

在 C++ 中循环初始化和动态声明随机实体的多个变量

20170803 - 今日技能封装 - Q