Random из массива.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

Random из массива.

Сообщение Rustem » 27.01.2005 (Чт) 10:32

Добрый день!

Прошу прощения, если такой вопрос уже был, но в FAQ и в остальном не нашел.
Про генерация случайного числа понятно, а обьясните пожалуйста, как _случайно_ выбрать символ из заданного массива символов? Ну например, как максимально случайно выбрать букву из английского алфавита?
Спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.01.2005 (Чт) 10:47

Код: Выделить всё
strBuffer = "ABCD...XYZ"
Randomize
I = 1 + Fix(Rnd*Len(strBuffer))
MsgBox Mid$(strBuffer, I, 1)
Lasciate ogni speranza, voi ch'entrate.

Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

Сообщение Rustem » 27.01.2005 (Чт) 10:52

Спасибо большое.

Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

UpperCase

Сообщение Rustem » 27.01.2005 (Чт) 11:33

И ещё один ламерский вопрос - текст в TextBox, как сделать, чтобы брался в UpperCase сразу?...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.01.2005 (Чт) 11:35

Код: Выделить всё
strString = UCase(Text1.Text)

Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

Сообщение Rustem » 27.01.2005 (Чт) 11:38

Спасибо

Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

Сообщение Rustem » 27.01.2005 (Чт) 11:56

Продолжение серии дурацких вопросов :).
Есть TextBox.
Есть s5 = Int(Rnd * 10), s5 as String (так надо :) )
Есть v5=UCase$(textBox1.text)
if v5=s5 then.... работает некорректно, потому что v5 = "7", s5 = 7 (например). Как обойти проблему с кавычками?.. v5 as String, вводимые символы - любые...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.01.2005 (Чт) 11:58

То есть v5 - строка, и притом открывается и закрывается кавычками?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.01.2005 (Чт) 12:00

Предлагаю заценить функции Val/CLng. А еще предлагаю купить небольшой справочник по VB.
Lasciate ogni speranza, voi ch'entrate.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.01.2005 (Чт) 12:11

alibek
Да я что-то не понимаю, Val ли нужен человеку... v5 - String, и s5 - тоже String... Может, ему надо отсечь начальную и конечную кавычки просто?
Тогда так:

Код: Выделить всё
if mid$(v5,2,len(v5)-2)=s5 then ...

Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

Сообщение Rustem » 27.01.2005 (Чт) 12:39

Справчоник есть, но... дома забыл :?
Нет, мне бы желательно, чтобы
s5 = Int(Rnd * 10) выдавало не 5, к примеру, а "5"

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.01.2005 (Чт) 12:45

Код: Выделить всё
s5 = """" & Int(Rnd * 10) & """"


*)
"""" - это четыре двойных кавычки

Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

Сообщение Rustem » 27.01.2005 (Чт) 12:54

Спасибо. На практике получилось так:
s5 = "" & Int(Rnd * 10) & "" , потому что 4 двойные кавычки давали ""1"", вроде пока то что надо :)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.01.2005 (Чт) 12:59

Странно, но у меня надо именно 4 кавычки...

Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

Сообщение Rustem » 27.01.2005 (Чт) 14:59

Если ещё не надоел - то вот ещё вопрос.
Есть random полученные s1,s2,s3,s4,.....s100, допустим.
Подскажите пожалуйста, как проверить - есть ли среди них одинаковые?..

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.01.2005 (Чт) 15:01

Для неленивых: отсортировать и пробежаться.
Для остальных: добавлять в коллекцию и ловить ошибку.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

Сообщение Rustem » 27.01.2005 (Чт) 15:04

Спасибо, а можно ещё для начинающих?..
Хотя бы с куском кода.
Хотя бы с командами.
Отсортировать - по какому признаку?.. Буквы(англ., рус)\цифры\знаки - как это сортировать?..

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.01.2005 (Чт) 15:07

У тебя же строки... Просто сравнивай их, как числа.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Rustem
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2005 (Чт) 10:25

Сообщение Rustem » 27.01.2005 (Чт) 15:16

Так все-таки - как сравнить?
if (s1=s2) or (s1=s3) or ... or (s1=s100) then...
elseif (s2=s3) or (s2=s4) or.... or (s2=s100) then...
elseif (s3=...............
Ну не знаю, что ж теперь. Потому помощи и прошу.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.01.2005 (Чт) 15:26

В таком виде? Именно так.
Более оптимальным будет хранить не в сотне переменных s1...s100, а в массиве s(1 to 100). И сортировку осуществлять в массиве.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 10

    TopList  
cron