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

Рандом без повторов

31.05.2011, 01:35. Показов 3701. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как реализовать получение нового целого числа в диапазоне от 1 до 10 при нажатии на button1 без повторов? Помогите пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2011, 01:35
Ответы с готовыми решениями:

Выборка из коллекции без повторов
Всех приветствую! Есть массив List of String. Для примера пусть в нем 100 строк. Необходимо случайным образом выбрать 50 строк, без...

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

Выделения без повторов
Как выделить из таблицы game7 avatar но без повторов.

7
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
31.05.2011, 08:03
На форме лейбл, свойство формы AutoScroll = True (так, для пущей наглядности)
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        Dim Col As New Collection
        Dim SB As New System.Text.StringBuilder
        Label1.Text = ""
        Dim Max As Integer = InputBox("Введите верхнюю границу числового диапазона. Это должно быть целое положительное число", "Ввод данных", "10")
        For I As Integer = 1 To Max
            Col.Add(I)
        Next
        Dim R As Integer
        Do While Col.Count > 0
            R = (Int(Rnd() * Col.Count + 1))
            SB.AppendLine(Col(R))
            Col.Remove(R)
        Loop
        Label1.Text = SB.ToString
Быстродействие довольно неплохое.
Значения должны быть уникальны для любого диапазона.
Еще забыл, в автозагрузку формы желательно написать
VB.NET
1
Randomize
, чтобы рандом был попривлекательнее.
0
 Аватар для probit
70 / 63 / 1
Регистрация: 25.04.2011
Сообщений: 181
31.05.2011, 12:09
Памирыч, разъясни пожалуйста о этом блоке немного:
VB.NET
1
2
3
4
5
6
Dim Col As New Collection 
Do While Col.Count > 0
            R = (Int(Rnd() * Col.Count + 1))
            SB.AppendLine(Col(R))
            Col.Remove(R)
        Loop
про цикл do while я понимаю, мне интересна переменная col и операции с ней.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
31.05.2011, 12:18
Col - это новая коллекция. Чем-то похожа на листбокс. В нее легко добавлять элементы, и легко удалять. Мы ее завели неспроста.
В первом цикле мы добавляем в коллекцию цифры от 1 до предела, что сказал нам пользователь.
Во втором цикле:
VB.NET
1
2
3
4
5
6
Do While Col.Count > 0 'Будем удалять пока коллекция не будет разгромлена
            R = (Int(Rnd() * Col.Count + 1)) 'Находим новый индекс по рандому, который упирается в размер коллекции (выше нам нельзя, там уже ничего нет)
' +1 - это для того, чтобы случайно не выпал ноль, ведь в коллекциях индексация начинается с единицы!
            SB.AppendLine(Col(R)) 'Записываем в СтрингБилдер (как бы строка, мы ее постепенно нагружаем, можно было просто & использовать, но у СтрингБилдера скорость в десятки раз быстрее стандартного &
            Col.Remove(R) 'Удаляем этот индекс из коллекции, чтобы он нам больше не попался
        Loop
Как-то так...
2
 Аватар для probit
70 / 63 / 1
Регистрация: 25.04.2011
Сообщений: 181
31.05.2011, 12:23
Спасибо, теперь тоже буду пользоваться.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
31.05.2011, 12:27
Просто дополню, что в коллекцию мы можем много чего добавлять - строки из файла, буквы, цифры и т.д.
0
 Аватар для probit
70 / 63 / 1
Регистрация: 25.04.2011
Сообщений: 181
31.05.2011, 12:28
ещё маленький вопросик: при добавлении в стрингбилдер числа также, как и при стандартном &, нужно преобразовывать в строку (str)?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
31.05.2011, 12:36
VB.NET
1
2
3
4
        Dim SB As New System.Text.StringBuilder
        SB.Append(4)
        SB.Append(8)
        MsgBox(SB.ToString)
Как видим, это вовсе не требуется.
Можно добавлять в строку (Append)
А можно в столбик (AppendLine)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.05.2011, 12:36
Помогаю со студенческими работами здесь

Вставка без повторов
Привет! Таблица: id | unique | status status default 0 - для тех которые были добавлены впервые. Как лучше сделать вставку...

Смена ip без повторов
Всем привет, нужна помощь. Нужно сделать что бы при смене ip на роутере через telnet ip проверялся на повтор- часто после переподключения...

Добавление в базу без повторов
Добрый день?

Генерация чисел без повторов
Подскажите пожалуйста, как сделать так, чтобы при генерации значения в строке не повторялись? #include <iostream> #include...

Random из 4 чисел без повторов
привет, очень нужно создать алгоритм который будет в случайном порядке расставлять числа (-1, 0, 1, 2,3), для того, чтобы размещать объекты...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru