Заполните массив случайным образом нулями и единицами так, чтобы количество единиц было больше количества нулей на языке Java
Мы используем cookie-файлы, чтобы получить статистику, которая помогает нам улучшить сервис для Вас с целью персонализации сервисов и предложений. Вы можете прочитать подробнее о cookie-файлах или изменить настройки браузера. Продолжая пользоваться сайтом без изменения настроек, вы даёте согласие на использование ваших cookie-файлов.
speech bubble

Заполните массив случайным образом нулями и единицами так, чтобы количество единиц было больше количества нулей на языке Java

Заполните массив случайным образом нулями и единицами так, чтобы количество единиц было больше количества нулей

 

Задание: Java. Заполните массив случайным образом нулями и единицами так, чтобы количество единиц было больше количества нулей

 

1 способ решения 

Заполнить массив чуть меньше половины нулями и перемешать

Дано:

Java(Джава) - язык программирования

import java.util.Arrays - класс, предоставляющий статические методы для динамического создания массивов Java и доступа к ним

import java.util.Random - экземпляр этого класса используется для генерации потока псевдослучайных чисел

N - количество элементов в массиве

binaryArray  - массив

shuffleArray - функция для случайного перемешивания значений массива

random - экземпляр класса Random

Решение:

import java.util.Arrays;
import java.util.Random;

public class Main
{
    public static void main(String[] args) {
        int N = 15;
        int[] binaryArray = new int[N];

        Arrays.fill(binaryArray, 1); //Заполнение массива единицами посредством метода fill

        for(int i = 0; i < N/2-1; i++){ //Заполнение частично массив нулями
            binaryArray[i] = 0;
        }

        shuffleArray(binaryArray); //Перемешиваем массив
        System.out.println(Arrays.toString(binaryArray));
    }

    private static void shuffleArray(int[] array)
    {
        int index, temp;
        Random random = new Random();
        for (int i = array.length - 1; i > 0; i--)
        {
            index = random.nextInt(i + 1);
            temp = array[index];
            array[index] = array[i];
            array[i] = temp;
        }
    }
}

Результат:

[1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1]

 

2 способ решения

Заполнить массив единицами и случайным образом на каждой ячейке массива(либо через одну) расставлять нули. Если количество нулей равно количеству единиц -1, то цикл завершается

Дано:

Java(Джава) - язык программирования

import java.util.Arrays - класс, предоставляющий статические методы для динамического создания массивов Java и доступа к ним

import java.util.Random - экземпляр этого класса используется для генерации потока псевдослучайных чисел.

N - количество элементов в массиве

binaryArray  - массив

countRandom - количество возможных нулей в массиве

countReal - реальное количество нулей в массиве

random - экземпляр класса Random

Решение:

import java.util.Arrays;
import java.util.Random;

public class Main
{
    public static void main(String[] args) {
        int N = 15;
        int countRandom = N/2-1;
        int countReal = 0;
        Random random = new Random();
        int[] binaryArray = new int[N];
        Arrays.fill(binaryArray, 1); //Заполнение массива единицами посредством метода fill

        for(int i = 0; i < binaryArray.length; i++) {           
            binaryArray[i] = random.nextInt(2);
            if (binaryArray[i] == 0) countReal++;
            if (countReal == countRandom) break; //Прерывание, если количество нулей равно максимальному количеству
        }
        System.out.println(Arrays.toString(binaryArray));
    }

}

Результат:

[1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0]

 

3 способ решения

Заполнить случайно массив единицами и нулями. В случае превышения нулей, расставить недостающие единицы

Дано:

Java(Джава) - язык программирования

import java.util.Arrays - класс, предоставляющий статические методы для динамического создания массивов Java и доступа к ним

import java.util.Random - экземпляр этого класса используется для генерации потока псевдослучайных чисел

N - количество элементов в массиве

binaryArray  - массив

countRandom - количество возможных нулей в массиве

countReal - реальное количество нулей в массиве

rand - случайное число от 0 до 1 включительно

random - экземпляр класса Random

Решение:

import java.util.Arrays;
import java.util.Random;

public class Main
{
    public static void main(String[] args) {
        int N = 15;
        int countRandom = N/2-1;
        int countReal = 0;
        Random random = new Random();
        int[] binaryArray = new int[N];

        for(int i = 0; i < binaryArray.length; i++) {
            int rand = 0;
            if (countReal >= countRandom) rand = 1; else rand = random.nextInt(2);
            binaryArray[i] = rand;
            if (rand == 0) countReal++;
        }
        System.out.println(Arrays.toString(binaryArray));
    }
}

Результат:

[1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1]

 

Для комментирования необходимо авторизоваться