Как я могу выбрать случайное значение из двумерного массива?

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

В массиве есть 2 значения: «песня» и «исполнитель». Я хочу, чтобы он выбрал случайную песню и присвоил значение «песня» и «исполнитель» двум отдельным переменным. Например, если бы песня была «song1», а исполнитель этой песни был «artist1», я бы хотел, чтобы переменная с именем selectedsong была назначена «song1», а selectedartist — «artist1».

Я пытался использовать Dim (тестирование Dim), но я не знаю, как использовать его в двумерном массиве.

Dim songart(,) As String = {{"song1", "artist1"},{"song2","artist2"}}

Dim testing(New Random().Next(0, testing.Length - 1))

Что, если вы также хотите узнать продолжительность песни или год? Жанр? Вы знаете, как построить класс? В любом случае, см. Массив.GetUpperBound. Объявите свой генератор случайных чисел как Поле: private rndSong As Random = New Random(). Тогда у вас может быть (где-то): Dim nextSong = rndSong.Next(songart.GetUpperBound(0) + 1) и Dim Song as String = songart(nextSong, 0) Dim Artist as string = songart(nextSong, 1). Если это не конкретное задание, посмотрите, как можно создать класс с различными свойствами (и методами).

Jimi 20.05.2019 21:59

Я только хочу, чтобы у программы было название песни и исполнитель песни.

Simonas K 20.05.2019 22:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
    Public Class FormRandom
        Private Shared Rdm As New Random


        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim songart(,) As String = {{"song1", "artist1"}, {"song2", "artist2"}, {"song3", "artist3"}, {"song4", "artist4"}}

            Dim RndNo As Integer = Rdm.Next(0, (songart.GetLength(0)))

            Dim SoundName As String = songart(RndNo, 0)
            Dim ArtistName As String = songart(RndNo, 1)

            TextBox1.Text = SoundName
            TextBox2.Text = ArtistName
        End Sub
    End Class

Да, я не думал, что длина вернет длину обоих измерений. Будет обновлять код

Mr. Tripodi 20.05.2019 22:16
songart.GetLength(0)-1 возвращает 3 (я добавил больше элементов)
Mr. Tripodi 20.05.2019 22:23

Я тоже, я протестировал код, и он выводит только song1 и artist1.

Simonas K 20.05.2019 22:23

Извините, кажется, я только что получил то же значение после тестирования примерно 5 раз? Каковы шансы! Спасибо за помощь :)

Simonas K 20.05.2019 22:27

правильно. может быть, я неправильно понимаю требование? вы можете отбросить -1, иначе он никогда не вернет последнее измерение

Mr. Tripodi 20.05.2019 22:28

обновленный код. если это не то, что вы хотите, удалите это

Mr. Tripodi 20.05.2019 22:29

@ Джими Понял. (я не очень использую многомерные массивы)

Mr. Tripodi 20.05.2019 22:31

Предложение. Измените Dim Rdm As New Random на Private Shared Rdm As New Random. Один экземпляр случайного класса почти всегда является лучшей политикой.

dbasnett 20.05.2019 23:27

Мне пришлось изменить несколько вещей, но теперь он работает полностью. Спасибо всем за помощь

Simonas K 21.05.2019 00:05

Другие вопросы по теме