Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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中生成随机数并查找小于或等于50的随机数的百分比_Java - Fatal编程技术网

在java中生成随机数并查找小于或等于50的随机数的百分比

在java中生成随机数并查找小于或等于50的随机数的百分比,java,Java,我的问题是,为什么代码不生成用户输入的数字量?现在代码只生成一个数字。以下是给我的原始问题: 在main方法中,提示用户输入数字n。编写一个方法 称为“评估随机性”,生成一个介于1和之间的随机数 100“n”次,并返回该数字小于的百分比 或等于50。从main调用您的assessment randomanness方法并显示 将结果从main发送给用户。不要从与用户交互 在评估随机性方法中。” 输出: How many random numbers should I generate? 10

我的问题是,为什么代码不生成用户输入的数字量?现在代码只生成一个数字。以下是给我的原始问题:

在main方法中,提示用户输入数字n。编写一个方法 称为“评估随机性”,生成一个介于1和之间的随机数 100“n”次,并返回该数字小于的百分比 或等于50。从
main
调用您的
assessment randomanness
方法并显示 将结果从
main
发送给用户。不要从与用户交互 在
评估随机性
方法中。”

输出:

 How many random numbers should I generate? 10
 <assume the random numbers generated were 11 7 50 61 52 3 92 100 81 66>
 40% of the numbers were 50 or less
我应该生成多少个随机数?10
40%的数字是50或更少
我的代码:

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("how many random numbers should I generate?: ");
    int number = in.nextInt();
    assessRandomness(number);
}

public static double assessRandomness(int n){
    int random = (int)(Math.random()*100);
    int randomNumbersLessthan50 = 0;

    if (random <= 50)
    {
        double getPercentage = random/randomNumbersLessthan50; 
    }
    else
    {
        System.out.println(random);
    }

    return random;
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.println(“我应该生成多少随机数?:”;
int number=in.nextInt();
随机性(数量);
}
公共静态随机性(int n){
int random=(int)(Math.random()*100);
int randomNumbersLessthan50=0;

如果(随机我在
中没有看到任何类型的循环评估随机性
。 试一试


目前,您的评估随机性方法从未使用变量n


首先,您应该初始化一个变量,该变量统计创建的大于50的随机数(这将是您的retutn值)。然后,您应该从0到n进行循环。对于每次循环运行,您应该创建一个介于0和100之间的随机值。然后,您应该检查该值是否大于50。如果大于50,请对以前创建的变量进行计数。循环完成后,返回count变量并在main方法中打印它。

代码中没有重复做某事n次

这里有一种使用流在一行中完成的方法:

public static double assessRandomness(int n) {
    return Stream.generate(Math::random).limit(n).map(r -> r * 100 + 1).filter(r -> r <= 50).count() / (double)n;
}

而且更容易阅读。

这将帮助您更好地理解如何做这样的事情

public static void main(String[] args) {

    System.out.println("how many random numbers should I generate?: ");

    Scanner in = new Scanner(System.in);
    int number = in.nextInt();

    int[] arrayPlaceHolderInMainMethod = new int[number];
    arrayPlaceHolderInMainMethod = generateRandomNumberArray(number);

    assessRandomness(arrayPlaceHolderInMainMethod);
}

public static void assessRandomness(int[] inputArray) {

    int randomNumbersLessthan50 = 0;
    int randomNumbersGreaterthan50 = 0;
    int random = 0;

    for (int i = 0; i < inputArray.length; i++) {
        random = inputArray[i];
    }

    if (random <= 50) {
        randomNumbersLessthan50 += 1;
    } else {
        randomNumbersGreaterthan50 += 1;
    }

    System.out.println(">50: " + randomNumbersGreaterthan50 + " Less: " + randomNumbersLessthan50);
}

public static int[] generateRandomNumberArray(int numberPickedByUser) {
    int[] arrayOfRandomNumbers = new int[numberPickedByUser];

    for (int i = 0; i < numberPickedByUser; i++) {
        arrayOfRandomNumbers[i] = (int) (Math.random() * 100 + 1);
    }

    return arrayOfRandomNumbers;
}
publicstaticvoidmain(字符串[]args){
System.out.println(“我应该生成多少随机数?:”;
扫描仪输入=新扫描仪(系统输入);
int number=in.nextInt();
int[]ArrayPlaceHolderMainMethod=新的int[number];
ArrayPlaceHolderInMain方法=GeneratorDomainNumberArray(数字);
评估随机性(ArrayPlaceHolderMain方法);
}
公共静态随机性(int[]输入阵列){
int randomNumbersLessthan50=0;
大于50的整数随机数=0;
int随机=0;
for(int i=0;i如果(随机好吧,为什么你认为这个代码应该生成n个随机数?它在哪里使用n?它有循环吗?你需要一个
for
循环来运行代码
n
次,每次它都会生成一个新的随机数,如果它小于50,则在计数器中添加1。旁注:你违反了指令
不要与用户进行交互om在assessment randomanness method
中,您正在打印以在那里输出。您应该返回百分比,而不是其中一个随机数。它仍然无法正常工作,我无法让它输出小于或等于50的数字百分比。好的,我想我已经得到了一切,除了,我如何显示随机数generator打印?@tilhox1
public static double assessRandomness(int n) {
    return Stream.generate(Math::random).limit(n).map(r -> r * 100 + 1).filter(r -> r <= 50).count() / (double)n;
}
public static double assessRandomness(int n) {
    return Stream.generate(Math::random).limit(n).filter(n -> n < .5).count() / (double)n;
}
public static void main(String[] args) {

    System.out.println("how many random numbers should I generate?: ");

    Scanner in = new Scanner(System.in);
    int number = in.nextInt();

    int[] arrayPlaceHolderInMainMethod = new int[number];
    arrayPlaceHolderInMainMethod = generateRandomNumberArray(number);

    assessRandomness(arrayPlaceHolderInMainMethod);
}

public static void assessRandomness(int[] inputArray) {

    int randomNumbersLessthan50 = 0;
    int randomNumbersGreaterthan50 = 0;
    int random = 0;

    for (int i = 0; i < inputArray.length; i++) {
        random = inputArray[i];
    }

    if (random <= 50) {
        randomNumbersLessthan50 += 1;
    } else {
        randomNumbersGreaterthan50 += 1;
    }

    System.out.println(">50: " + randomNumbersGreaterthan50 + " Less: " + randomNumbersLessthan50);
}

public static int[] generateRandomNumberArray(int numberPickedByUser) {
    int[] arrayOfRandomNumbers = new int[numberPickedByUser];

    for (int i = 0; i < numberPickedByUser; i++) {
        arrayOfRandomNumbers[i] = (int) (Math.random() * 100 + 1);
    }

    return arrayOfRandomNumbers;
}