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

Выбор случайных неповторяющихся элементов из массива

13.09.2013, 15:31. Показов 9739. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив из 100 элементов. Нужно случайным образом выбрать из этого массива 6 элементов и поместить их в другой массив. При этом элементы, выбранные из массива не должны повторяться. Подскажите, пожалуйста, как это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.09.2013, 15:31
Ответы с готовыми решениями:

Генератор неповторяющихся случайных чисел
Есть коллекция стринг, 30 элементов. Нужно чтоб они не повторялись, но выводились все. Как это реализовать? Через обычный массив,...

Сгенерировать два массива случайных целых чисел A и B по 100 элементов. Слить их в массив C из 200 элементов так, чтобы элементы массива A имели в C н
Сгенерировать два массива случайных целых чисел A и B по 100 элементов. Слить их в массив C из 200 элементов так, чтобы элементы массива A...

Массив неповторяющихся случайных элементов
Доброе время суток, нужна помощь! Нужно создать массив из 6 элементов в приделах(0,11) которые не будут повторяться. Вот то что я...

11
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
13.09.2013, 15:40
Не должны повторяться индексы элементов или сами элементы? Они уникальные?
0
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 86
13.09.2013, 15:41  [ТС]
Не должны повторяться элементы. Да, они уникальные.
0
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
13.09.2013, 16:03
Endenwer,
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.sevak_avet.Test;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
 
public class Test {
    public static void main(String[] args) throws Exception {
        Integer[] arr = new Integer[100];
        
        for(int i=0; i<arr.length; ++i) {
            arr[i] = i + 1;
        }
        
        
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(getNewArr(arr)));
    }
    
    public static boolean isRealy(Integer ... arr) {
        Set<Integer> set = new HashSet<Integer>(Arrays.asList(arr));
        return set.size() >= 6;
    }
    
    public static Integer[] getNewArr(Integer ... arr) throws Exception {
        if(!isRealy(arr)) {
            throw new Exception("В массиве менее 6 различных элементов");
        }
        
        Integer[] newArr = new Integer[6];
        List<Integer> list = new ArrayList<>();
        Random r = new Random();
        
        int count = 0;
        int currentElement = 0;
        
        while(count < 6) {
            currentElement = arr[r.nextInt(arr.length)];
            if(!list.contains(currentElement)) {
                list.add(currentElement);
                ++count;
            }
        }
        
        return list.toArray(newArr);
    }
}
1
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 86
13.09.2013, 16:28  [ТС]
А есть ли в обычном массиве, подобие contains()?
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
13.09.2013, 17:54
Цитата Сообщение от Endenwer Посмотреть сообщение
Не должны повторяться элементы. Да, они уникальные.
Если они уникальные, то Вам надо выбрать 6 уникальных индексов в массиве. Т.е. сгенерировать шесть чисел от 0 до 99, складывая их в set. Как только там 6 элементов - достаете и берете из массива элементы по этим индексам.
1
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 86
13.09.2013, 20:51  [ТС]
Java
1
2
3
4
5
Random random = new Random();
        Set<Integer> intset = new HashSet<Integer>();
        while (intset.size() < 6){
            intset.add(random.nextInt(29));
        }
Помести случайные числа в set, а как достать не знаю.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
13.09.2013, 21:06
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
31
32
33
34
35
36
37
38
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
 
public class Test {
    public static final int ELEMENTS_NEW_ARRAY = 6;
    
    public static void main(String[] args) {
        
        int[] array = new int[100];
        for (int i = 0; i < array.length; i++) {
            array[i] = i + 1;           
        }
        
        int[] newArray = giveMeArrayValues(array);
        
        System.out.println(Arrays.toString(newArray));
        
 
    }
    
    public static int[] giveMeArrayValues(int[] incomArray) {
        List<Integer> list = new ArrayList<>();
        int[] newArray = new int[ELEMENTS_NEW_ARRAY];
        
        for (int i = 0; i < incomArray.length; i++) {
            list.add(incomArray[i]);
        }
        Collections.shuffle(list);
        
        for (int i = 0; i < ELEMENTS_NEW_ARRAY; i++) {
            newArray[i] = list.get(i);
        }
        return newArray;
    }
}
Добавлено через 6 минут
Цитата Сообщение от Endenwer Посмотреть сообщение
Java
1
2
3
4
5
Random random = new Random();
        Set<Integer> intset = new HashSet<Integer>();
        while (intset.size() < 6){
            intset.add(random.nextInt(29));
        }
Помести случайные числа в set, а как достать не знаю.
могли бы взять коллекцию попроще для своей цели, а вы на HashSet позарились сразу
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
 
public class Test {
    
    public static void main(String[] args) {
        
        Random random = new Random();
        Set<Integer> intset = new HashSet<Integer>();
        while (intset.size() < 6){
            intset.add(random.nextInt(29));
        }
        
        Iterator<Integer> iterator = intset.iterator();
        
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        
    }
}
0
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 86
13.09.2013, 21:16  [ТС]
Неужели это нельзя никак реализовать без списочного массива? Просто у меня двумерный массив и я не могу его поместить в списочный.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
13.09.2013, 21:26
двумерный массив - это массив массивов
array[0][] - массив
array[1][] - тоже массив

так что ваше утверждение считаю не верным, что не можете поместить
0
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 86
13.09.2013, 21:42  [ТС]
В общем есть массив:
Code
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
  words = new String[30][2];
 
        words[0][0] = "term";
        words[0][1] = "термин";
 
        words[1][0] = "mean";
        words[1][1] = "обозначать";
 
        words[2][0] = "device";
        words[2][1] = "прибор";
 
        words[3][0] = "capable";
        words[3][1] = "способный";
 
        words[4][0] = "perform";
        words[4][1] = "выполнять";
 
        words[5][0] = "calculation";
        words[5][1] = "вычисление";
 
        words[6][0] = "human being";
        words[6][1] = "человек";
 
        words[7][0] = "involve";
        words[7][1] = "вовлекать";
 
        words[8][0] = "data";
        words[8][1] = "данные";
 
        words[9][0] = "process";
        words[9][1] = "обрабатывать";
 
        words[10][0] = "store";
        words[10][1] = "хранить";
 
        words[11][0] = "feed";
        words[11][1] = "подавать";
 
        words[12][0] = "complicated";
        words[12][1] = "сложный";
 
        words[13][0] = "add";
        words[13][1] = "складывать";
 
        words[14][0] = "subtract";
        words[14][1] = "вычитать";
 
        words[15][0] = "multiply";
        words[15][1] = "умножать";
 
        words[16][0] = "divide";
        words[16][1] = "делать";
 
        words[17][0] = "digit";
        words[17][1] = "цифра";
 
        words[18][0] = "circuit";
        words[18][1] = "схема";
 
        words[19][0] = "brain";
        words[19][1] = "мозг";
 
        words[20][0] = "solve";
        words[20][1] = "решать";
 
        words[21][0] = "large-scale integrated";
        words[21][1] = "большая интегральная";
 
        words[22][0] = "сhip";
        words[22][1] = "микросхема";
 
        words[23][0] = "design";
        words[23][1] = "конструировать";
 
        words[24][0] = "purpose";
        words[24][1] = "цель";
 
        words[25][0] = "scientific";
        words[25][1] = "научный";
 
        words[26][0] = "use";
        words[26][1] = "использование";
 
        words[27][0] = "necessary";
        words[27][1] = "необходимый";
 
        words[28][0] = "accurate";
        words[28][1] = "точный";
 
        words[29][0] = "complex";
        words[29][1] = "сложный";
Нужно получить из этого массива, например, такой:
Code
1
2
3
4
5
6
7
8
9
10
11
words[4][0] = "perform";
words[4][1] = "выполнять";
 
words[7][0] = "involve";
words[7][1] = "вовлекать";
 
words[8][0] = "data";
words[8][1] = "данные";
 
words[13][0] = "add";
words[13][1] = "складывать";
Нумерация не обязательно такая. Т.е. Я имею ввиду, что мне нужно 6 случайных строк из этого массива.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
13.09.2013, 22:09
По прежнему не вижу препятствий, у вас на руках уже маленькая куча реализаций как получить 6 уникальных номеров
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2013, 22:09
Помогаю со студенческими работами здесь

Генерация массива случайных неповторяющихся чисел
Нужно сгенирировать массив случайных чисел. Предположим что массив размером 10000, а диапазон чисел от 1 до 1000000. Вариант брать...

Выбор из массива случайных элементов
Есть массив из 20 элементов a = Надо выбрать из этого массива рандомно один или два или три элемента и соответственно записать их в...

Сгенерировать матрицу М на N случайных неповторяющихся элементов от 0 до 300
Сгенерировать матрицу М на N случайных неповторяющихся элементов от 0 до 300. Вывести на экран, отсортировать по убыванию элементов. Число...

перебор неповторяющихся элементов массива
Задан одномерный массив А целых чисел Составить новый одномерный массив В, в который нужно занести неповторяющиеся элементы массива А....

НОД неповторяющихся элементов массива
Составьте программу вычисления наибольшего общего делителя неповторяющихся элементов целочисленного массива А(N)


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru