Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 29.11.2015
Сообщений: 26

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

16.02.2016, 21:11. Показов 3609. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, Есть одномерный массив неправильных вопросов, мне их нужно перемешать и выводить в listBox в случайном порядке и без повторения.

Может даже написать какую нибудь процедуру что ли, и функцию

Вот тут я набросал код. Только что то он не так работает:

VB.NET
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
Option Explicit Off
Public Class Form1
 
 
    Dim arr() As String = {"НЕВЕРНЫЙ1", "НЕВЕРНЫЙ2", "НЕВЕРНЫЙ3", "НЕВЕРНЫЙ4", "НЕВЕРНЫЙ5"}
    Dim sts As New List(Of Integer)
 
 
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For i = 0 To arr.GetLength(0) - 1
            sts.Add(i)
        Next
    End Sub
 
   
 
    Public Sub wrong()
        If sts.Count Then
            Randomize()
            i = Fix(Rnd() * sts.Count)
            R = sts(i)
            sts.RemoveAt(i)
            ListBox1.Items.Clear()
 
            For i = 0 To 2
                Randomize()
                If R - i > -1 Then
                    Label2.Text = R - i
                    ListBox1.Items.Add(arr(R - i)) 'вывожу 
                Else
 
                End If
            Next
        Else
            MessageBox.Show("Все перебларл")
        End If
 
 
 
    End Sub
 
 
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        wrong()
    End Sub
 
End Class
должно получится что т вроде

LISTBOX
НЕВЕРНЫЙ5
НЕВЕРНЫЙ1
НЕВЕРНЫЙ3
или
НЕВЕРНЫЙ1
НЕВЕРНЫЙ2
НЕВЕРНЫЙ4

Ну суть понятна
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2016, 21:11
Ответы с готовыми решениями:

Перемешать массив в случайном порядке
...доброго времени суток, уважаемые форумчане! Существует ли в классе Array "прямой" метод случайного перемешивания массива? - что-то...

КАК ВЫВЕСТИ МАССИВ БЕЗ ПОВТОРЕНИЯ ЧИСЕЛ (ОДНОМЕРНЫЙ)
ПОМОГИТЕ !!!!!

Перемешать числа в случайном порядке
Есть набор чисел: { 1, 2, 3, 4, 5, 6, 7, 8, 0 } Нужно написать функцию, которая будет перемешивать данные числа в случайном порядке.

6
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18285 / 14208 / 5368
Регистрация: 17.03.2014
Сообщений: 28,887
Записей в блоге: 1
16.02.2016, 21:39
Лучший ответ Сообщение было отмечено danir1998 как решение

Решение

danir1998, для этого есть хороший алгоритм Фишера–Йетса. Добавь в проект нижеприведенный модуль с его реализаций в виде расширяющего метода для IList и у тебя появится метод Shuffle который перемешает массив.
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Imports System.Runtime.CompilerServices
 
Module ListExtensions
 
    <Extension> _
    Public Function Shuffle(Of T)(list As IList(Of T)) As IList(Of T)
 
        If List Is Nothing Then Return Nothing
        Dim rnd As New Random
        For I As Integer = list.Count - 1 To 0 Step -1
 
            Dim j As Integer = rnd.Next(0, I + 1)
            Dim temp As T = list(I)
            list(I) = list(j)
            list(j) = temp
        Next
        Return list
 
    End Function
 
End Module
6
0 / 0 / 0
Регистрация: 29.11.2015
Сообщений: 26
16.02.2016, 21:45  [ТС]
OwenGlendower, Объясни пожалуйста куда это тыкать, я новичек еще)
0
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
16.02.2016, 21:53
А я вот такую простенькую за пять мин накидал.

VB.NET
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
Module Module1
 
    Public Structure Quesition
        Dim ques As String
        Dim isViewed As Boolean
    End Structure
 
    Sub Main()
 
        '   create array
        Dim VOPVOSNIC(4) As Quesition
 
        For i As Integer = 0 To 4
            With VOPVOSNIC(i)
                .ques = "Вопрос " & i
                .isViewed = False
            End With
        Next
 
        'getting rnd values
        Dim ques_empty As Boolean = False
        Do While Not ques_empty
            Dim index As Integer = CInt(Rnd() * 4)
            If VOPVOSNIC(index).isViewed = False Then
                Console.WriteLine(VOPVOSNIC(index).ques)
                VOPVOSNIC(index).isViewed = True
            End If
            For i As Integer = 0 To 4
                If VOPVOSNIC(i).isViewed = False Then ques_empty = False
            Next
        Loop
 
 
        Beep()
        '        Console.ReadLine
        Console.ReadLine()
    End Sub
 
End Module
1
0 / 0 / 0
Регистрация: 29.11.2015
Сообщений: 26
16.02.2016, 21:55  [ТС]
Хех нет спасибо, все хорошо. То что нужно!
0
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
16.02.2016, 21:55
Пойдет для разумного числа вопросов. Тысячами и миллионами оперировать не стОит)))
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18285 / 14208 / 5368
Регистрация: 17.03.2014
Сообщений: 28,887
Записей в блоге: 1
16.02.2016, 22:10
danir1998, щелкаешь ПКМ на имени проекта и выбираешь команду Add -> Module. Даешь файлу имя ListExtensions. Заменяешь содержимое файла на код из спойлера. Затем там где тебе нужно перемешать массив или List(Of T) пишешь имяПеременной.Shuffle().
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2016, 22:10
Помогаю со студенческими работами здесь

Перемешать строки DataGrid в случайном порядке
Добрый день! Вот вроде просто, а ума не приложу как это сделать... Есть DataGridView, в который забит некий список строк. Нужно...

Перемешать строки .txt файла в случайном порядке
Есть участок кода (хотя это по сути весь код): while (true) { using (System.IO.StreamWriter file = new...

Как перемешать строки массива в случайном порядке?
Здравствуйте! Подскажите, пожалуйста, как перемешать строки массива в случайном порядке? Наверняка есть стандартный способ, но мне в...

Перемешать матрицу Z(m,n), переставив все её элементы в случайном порядке.
Перемещать матрицу Z(m,n), переставив все её элементы в случайном порядке

Как перемешать ячейки в случайном порядке. и в каждом столбце отдельно
Здраствуйте формучане. Возникла такая надобность. Перемешать ячейки в столбцах. Столбцов много. прикрепляю файл с моим примером. Там всё...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru