Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 15

Рандом без дубликатов и превращение массива

20.12.2017, 22:22. Показов 1289. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, всем привет.
Сразу скажу, что я только начал изучать java.. И уже пытался найти самостоятельно инфу по своему вопросу, но не понял, подойдет ли мне то, что я нашел или нет.

Суть вопроса, в том, что у меня есть одномерный массив, из элементов со значениями задающимися рандомно из определенного диапазона.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package alg3met;
 
import java.util.*;
 
public class Alg3Met {
 
    public static void main(String[] args) {
    int rb = ((int)(Math.random() * 8) + 8);
    System.out.println("Количество работ = " + rb);
    
    System.out.println("  ");
    System.out.println("Массив работ:");
    
    //Создаем массив весов работ и заполняем его
    Integer[] array = new Integer[rb];
    for (int i = 0; i < array.length; i++) {
    array[i] = ((int)(Math.random() * 26));
    System.out.print(array[i]+" ");
    }
    System.out.println("  ");
    
    //Сортируем массив
    System.out.println("Сортированный массив работ:");
    Arrays.sort(array, Collections.reverseOrder());
        for(int i = 0; i <  array.length; i++) {
        System.out.print(array[i] + "  ");
}
    }
    
}
1. Я хотел бы сделать так, чтобы значения в массиве не повторялись.
На русском языке адекватной инфы, что-то не нашел, как это сделать.. А из кусков кода которые есть, непонятно как это применить)))

2. После заполнения массива, я сортирую его по убыванию, и после этого мне нужно превратить его в двумерный, при этом значения одномерного должны быть в первом столбце а в остальные - дублироваться
Например, мне выдает рандом 7 5 3 2 1, скажем я хочу сделать 3 столбца

7 7 7
5 5 5
3 3 3
2 2 2
1 1 1

Должно получиться примерно вот это...
Я примерно нашел инфу, как превратить массив в двумерный и сейчас изучаю эту инфу, а также нашел Метод Arrays.fill() - наполнение массива одинаковыми данными.

Могу ли с помощью этого метода дублировать значения?

Был бы благодарен, если бы помогли разобраться с данными вопросами)) Или сказали, бы что нужно почитать или посмотреть)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2017, 22:22
Ответы с готовыми решениями:

Рандом без дубликатов
Добрый день, есть два массива один уже заполнен, второй заполняется рандомом со значениями из первого массива, суть в том, что во втором...

Превращение отрицательного числа в 0 (без if, for, max и т.д.)
Как отрицательное число превратить в 0 без if, for, max и других функций, используя только арифметические выражения (-, +, //, %, и т.д.)?

Сохранение без дубликатов
При сохранении надо поставить проверку, имеется ли в файле строки, которые будут сохранены. Сохранение происходит из listBox. string...

3
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.12.2017, 22:49
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Main {
 
    public static void main(String[] args) {
        int[] arr = {7, 6, 5, 4, 3, 2, 1};
        int[][] arr2 = new int[arr.length][3];
 
        for (int i = 0; i < arr2.length; i++) {
            for (int j = 0; j < arr2[i].length; j++) {
                arr2[i][j] = arr[i];
            }
        }
        
        for (int[] anArr2 : arr2) {
            for (int anAnArr2 : anArr2) {
                System.out.print(anAnArr2 + " ");
            }
            System.out.println();
        }
    }
}
Добавлено через 2 минуты
А по первому вопросу...
При получении каждого нового элемента массива, сравнивай со всеми предыдущими. Если совпадение - еще разок...

Добавлено через 4 минуты
Цитата Сообщение от Hexusss Посмотреть сообщение
Могу ли с помощью этого метода дублировать значения?
Можешь. Например вместо строк 8, 9, 10 -
Java
1
Arrays.fill(arr2[i], arr[i]);
1
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 15
20.12.2017, 23:12  [ТС]
Спасибо большое за помощь с превращением и дублированием)))
Я как раз экспериментировал с этим методом.

А вот с первым вопросом затык.....
Я нашел такой вариант заполнения рандомом, без дубликатов.
Java
1
2
3
4
5
6
7
8
9
10
final int N = 9;
ArrayList<Integer> arrayList = new ArrayList<>(N);
Random random = new Random();
 
while (arrayList.size() < N) {
    int i = random.nextInt(N) + 1;
    if (!arrayList.contains(i)) {
        arrayList.add(i);
    }
}
Но дело в том, что с помощью, math.random я реализую заполнение из определенного диапазона.. Можно ли это условие вносить в random.nextInt(N)?

Хотя везде советуют использовать коллекции))) но я до них еще не добрался)))
В будущем обязательно оптимизирую, но сейчас хочется принципы понять этих действий.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.12.2017, 23:22
Вот тебе рэндом без дубликатов, на простом массиве...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Random;
 
public class Main {
 
    public static void main(String[] args) {
        int[] arr = new int[10];
        Random random = new Random();
        int x;
 
        for (int i = 0; i < arr.length; i++) {
            do {
                x = random.nextInt(20);
            } while (test(arr, x, i));
            arr[i] = x;
        }
 
        for (int anArr : arr) {
            System.out.print(anArr + " ");
        }
    }
 
    private static boolean test(int[] a, int val, int count) {
        for (int j = 0; j < count; j++) {
            if (a[j] == val) return true;
        }
        return false;
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2017, 23:22
Помогаю со студенческими работами здесь

Коллекция без дубликатов
Здравствуйте. Возник вопрос: мне нужно сделать коллекцию (т.е. динамический массив), но в нем не должно содержаться дубликатов, потому что...

Превращение двумерного массива в одномерный
с клавиатуры вводится массив матрица А размером 5х4; из него формируется массив вектор В длиной 4 ячейки. массив заполняется по правилу...

Поиск дубликатов без LINQ
Есть список объектов класса Class1. public class Class1 { public int Num; //номер по порядку public string ID;...

Добавить запись без дубликатов
Нужно составить SQL запрос: Добавить 1 запись только если этой записи не существует в таблицу CATEGORY. Сейчас у меня так: INSERT...

Объединение без удаления дубликатов
В Linq есть метод Union-для обьединения резултатов двух или более операторов Linq с исключением повторяющихся строк.А есть ли метод для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru