Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用随机数编写程序_Java_Random - Fatal编程技术网

Java 用随机数编写程序

Java 用随机数编写程序,java,random,Java,Random,我必须作为一个项目为我的CS课程介绍写一个程序。该计划必须 向用户询问最小值(可以是负值) 向用户询问最大值(也可能是负值,但必须大于最小值) 生成二十个介于用户给定的最小/最大值和 平均生成20个随机数 我以为我已经完成了程序,但当我执行程序时,这些数字从来都不是随机的,所有二十个数字的值都与我在emacs中输入的最大值相同。当然,在这种情况下,平均值和最大值是一样的。这是我目前的节目 import java.util.Scanner; import java.util.Random; pu

我必须作为一个项目为我的CS课程介绍写一个程序。该计划必须

  • 向用户询问最小值(可以是负值)
  • 向用户询问最大值(也可能是负值,但必须大于最小值)
  • 生成二十个介于用户给定的最小/最大值和
  • 平均生成20个随机数
  • 我以为我已经完成了程序,但当我执行程序时,这些数字从来都不是随机的,所有二十个数字的值都与我在emacs中输入的最大值相同。当然,在这种情况下,平均值和最大值是一样的。这是我目前的节目

    import java.util.Scanner;
    import java.util.Random;
    
    public class CS_ProjectOne
    {
        public static void main(String[] args)
        {
        int minimum_integer;
        int maximum_integer;
        int rn1;
        int rn2;
        int rn3;
        int rn4;
        int rn5;
        int rn6;
        int rn7;
        int rn8;
        int rn9;
        int rn10;
        int rn11;
        int rn12;
        int rn13;
        int rn14;
        int rn15;
        int rn16;
        int rn17;
        int rn18;
        int rn19;
        int rn20;
        double total;
        double average;
        Scanner keeper;
        Scanner keeper2;
        Random gen;
        gen = new Random();
    
        keeper = new Scanner(System.in);
        System.out.print("Please enter an integer for the MINIMUM value: ");
        minimum_integer = keeper.nextInt();
    
        keeper2 = new Scanner(System.in);
        System.out.print("Please enter an integer for the MAXIMUM value: ");
        maximum_integer = keeper2.nextInt();
    
        rn1 = gen.nextInt();
        rn1 = rn1 % minimum_integer + maximum_integer;
        rn2 = gen.nextInt();
        rn2 = rn2 % minimum_integer + maximum_integer;
        rn3 = gen.nextInt();
        rn3 = rn3 % minimum_integer + maximum_integer;
        rn4 = gen.nextInt();
        rn4 = rn4 % minimum_integer + maximum_integer;
        rn5 = gen.nextInt();
        rn5 = rn5 % minimum_integer + maximum_integer;
        rn6 = gen.nextInt();
        rn6 = rn6 % minimum_integer + maximum_integer;
        rn7 = gen.nextInt();
        rn7 = rn7 % minimum_integer + maximum_integer;
        rn8 = gen.nextInt();
        rn8 = rn8 % minimum_integer + maximum_integer;
        rn9 = gen.nextInt();
        rn9 = rn9 % minimum_integer + maximum_integer;
        rn10 = gen.nextInt();
        rn10 = rn10 % minimum_integer + maximum_integer;
        rn11 = gen.nextInt();
        rn11 = rn11 % minimum_integer + maximum_integer;
        rn12 = gen.nextInt();
        rn12 = rn12 % minimum_integer + maximum_integer;
        rn13 = gen.nextInt();
        rn13 = rn13 % minimum_integer + maximum_integer;
        rn14 = gen.nextInt();
        rn14 = rn14 % minimum_integer + maximum_integer;
        rn15 = gen.nextInt();
        rn15 = rn15 % minimum_integer + maximum_integer;
        rn16 = gen.nextInt();
        rn16 = rn16 % minimum_integer + maximum_integer;
        rn17 = gen.nextInt();
        rn17 = rn17 % minimum_integer + maximum_integer;
        rn18 = gen.nextInt();
        rn18 = rn18 % minimum_integer + maximum_integer;
        rn19 = gen.nextInt();
        rn19 = rn19 % minimum_integer + maximum_integer;
        rn20 = gen.nextInt();
        rn20 = rn20 % minimum_integer + maximum_integer;
    
        System.out.println("Your random numbers are: " + rn1 + ", " + rn2 + ", " + rn3 + ", " + rn4 + ", " + rn5 + ", " + rn6 + ", " + rn7 + ", " + rn8 + ", " + rn9 + ", " + rn10 + ", " + rn11 + ", " + rn12 + ", " + rn13 + ", " + rn14 + ", " + rn15 + ", " + rn16 + ", " + rn17 + ", " + rn18 + ", " + rn19 + ", " + rn20 + ".");
    
        total = rn1 + rn2 + rn3 + rn4 + rn5 + rn6 + rn7 + rn8 + rn9 + rn10 + rn11 + rn12 + rn13 + rn14 + rn15 + rn16 + rn17 + rn18 + rn19 + rn20;
        average = total / 20;
    
        System.out.print("The average is " + average);
        }
    }
    
    谁能帮我一把,把我引向正确的方向?我肯定有些事情我做得不对(或者很多事情),我只是不知道那到底是什么

    这是一个简短的版本,我试图让这个工作

    import java.util.Random;
    import java.util.Scanner;
    
    public class p1
    {
        public static void main(String[] args)
        {
        Random gen;
        gen = new Random();
        Scanner keeper;
        int range, user_min, user_max, num1, num2, num3, total;
        double average;
    
        keeper = new Scanner(System.in);
        System.out.print("Please enter a maximum integer value: ");
            user_max = keeper.nextInt();
    
            keeper = new Scanner(System.in);
        System.out.print("Please enter a minimum integer value: ");
        user_min = keeper.nextInt();
    
        range = user_max - user_min + 1;
    
        num1 = gen.nextInt() % range + user_min;
        num2 = gen.nextInt() % range + user_min;
        num3 = gen.nextInt() % range + user_min;
    
        System.out.print("The random numbers computed are " + num1 + ", " + num2 + ", " + num3 + ", ");
        }
    }
    
    为什么这个不能处理负片?我的值仍然不在指定的范围内?帮助?

    线路

    rn1 = rn1 % minimum_integer + maximum_integer;
    
    这是错误的。例如,考虑在1到6范围内生成数字。那你是在计算

    rn1 = rn1 % 1 + 6;
    
    现在,
    rn1%1
    总是等于0,所以总是得到6。你应该使用不同的公式

    线路

    rn1 = rn1 % minimum_integer + maximum_integer;
    
    这是错误的。例如,考虑在1到6范围内生成数字。那你是在计算

    rn1 = rn1 % 1 + 6;
    
    现在,
    rn1%1
    总是等于0,所以总是得到6。你应该使用不同的公式

    线路

    rn1 = rn1 % minimum_integer + maximum_integer;
    
    这是错误的。例如,考虑在1到6范围内生成数字。那你是在计算

    rn1 = rn1 % 1 + 6;
    
    现在,
    rn1%1
    总是等于0,所以总是得到6。你应该使用不同的公式

    线路

    rn1 = rn1 % minimum_integer + maximum_integer;
    
    这是错误的。例如,考虑在1到6范围内生成数字。那你是在计算

    rn1 = rn1 % 1 + 6;
    
    现在,
    rn1%1
    总是等于0,所以总是得到6。你应该使用不同的公式

    随机列表示例:
    (为了便于演示,使用Python而不是Java。)

    您感兴趣的方面有:

    • 第5行:这决定了随机数的分布
    • 第7行:这将获取范围的随机值
      [0.0,1.0)
      ;乘以所需的用户范围;然后强制转换为整数以“删除”尾部小数点;然后将结果添加到范围的最小允许值
    例如:

    range = (10) - (-5) + 1 = 16
    a_result = (int)(0.14159265359 * 16) + -5 = 3 - 5 = -3
    another_result = (int)(0.71828182845 * 16) + -5 = 11 - 5 = 6
    
    随机列表示例:
    (为了便于演示,使用Python而不是Java。)

    您感兴趣的方面有:

    • 第5行:这决定了随机数的分布
    • 第7行:这将获取范围的随机值
      [0.0,1.0)
      ;乘以所需的用户范围;然后强制转换为整数以“删除”尾部小数点;然后将结果添加到范围的最小允许值
    例如:

    range = (10) - (-5) + 1 = 16
    a_result = (int)(0.14159265359 * 16) + -5 = 3 - 5 = -3
    another_result = (int)(0.71828182845 * 16) + -5 = 11 - 5 = 6
    
    随机列表示例:
    (为了便于演示,使用Python而不是Java。)

    您感兴趣的方面有:

    • 第5行:这决定了随机数的分布
    • 第7行:这将获取范围的随机值
      [0.0,1.0)
      ;乘以所需的用户范围;然后强制转换为整数以“删除”尾部小数点;然后将结果添加到范围的最小允许值
    例如:

    range = (10) - (-5) + 1 = 16
    a_result = (int)(0.14159265359 * 16) + -5 = 3 - 5 = -3
    another_result = (int)(0.71828182845 * 16) + -5 = 11 - 5 = 6
    
    随机列表示例:
    (为了便于演示,使用Python而不是Java。)

    您感兴趣的方面有:

    • 第5行:这决定了随机数的分布
    • 第7行:这将获取范围的随机值
      [0.0,1.0)
      ;乘以所需的用户范围;然后强制转换为整数以“删除”尾部小数点;然后将结果添加到范围的最小允许值
    例如:

    range = (10) - (-5) + 1 = 16
    a_result = (int)(0.14159265359 * 16) + -5 = 3 - 5 = -3
    another_result = (int)(0.71828182845 * 16) + -5 = 11 - 5 = 6
    
    一些提示:

  • 对20个数字使用一个数组。当你发现一个错误时,你只需要纠正一次,而不是20次

  • 随机数生成器具有种子。请确保每次都提供不同的种子,否则随机数生成器将始终生成相同的随机数集

  • 最小值和最大值之间可以有多少个值?例如,在3和7之间可以有多少个不同的值?45和80?3和1200?找到模式

  • 了解程序为什么需要“%”运算符。执行“gen.nextInt()%NUM”可以实现什么目的

  • 一些提示:

  • 对20个数字使用一个数组。当你发现一个错误时,你只需要纠正一次,而不是20次

  • 随机数生成器具有种子。请确保每次都提供不同的种子,否则随机数生成器将始终生成相同的随机数集

  • 最小值和最大值之间可以有多少个值?例如,在3和7之间可以有多少个不同的值?45和80?3和1200?找到模式

  • 了解程序为什么需要“%”运算符。执行“gen.nextInt()%NUM”可以实现什么目的

  • 一些提示:

  • 对20个数字使用一个数组。当你发现一个错误时,你只需要纠正一次,而不是20次

  • 随机数生成器具有种子。请确保每次都提供不同的种子,否则随机数生成器将始终生成相同的随机数集

  • 最小值和最大值之间可以有多少个值?例如,在3和7之间可以有多少个不同的值?45和80?3和1200?找到模式

  • 了解程序为什么需要“%”运算符。实现了什么