Выбор числа

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

Выбор числа

Сообщение Morion » 01.04.2006 (Сб) 11:54

Всем привет!
Подскажите, как взять какое-либо произвольное число, но начиная не с нуля? Допустим выбрать число, находящееся в диапазоне от 25 до 100.
Заранее благодарю.
Компьютер – отличная вещь! Он позволяет решать все проблемы, которые до изобретения компьютера просто не существовали!..

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

Сообщение Amed » 01.04.2006 (Сб) 12:23

x = 25 + Rnd*(100-25)

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 01.04.2006 (Сб) 14:01

Зачем писать (100 - 25)?

n = 25 + CInt(Rnd * 75)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Сообщение Amed » 01.04.2006 (Сб) 14:11

Чтобы было понятно, в каком диапазоне выбирается число.

Roman-vb
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 24.01.2006 (Вт) 18:31
Откуда: БРЯНСК

Сообщение Roman-vb » 01.04.2006 (Сб) 16:25

n = 25 + CInt(Rnd * 75)
Выглядит весьма сомнительно :? Если целое от 25 до 100, то
Код: Выделить всё
n = Int(25 + 76 * Rnd)

neic
Жираф
Жираф
 
Сообщения: 492
Зарегистрирован: 13.02.2005 (Вс) 23:44
Откуда: Сланцы

Сообщение neic » 01.04.2006 (Сб) 16:44

Roman-vb писал(а):
n = 25 + CInt(Rnd * 75)
Выглядит весьма сомнительно :? Если целое от 25 до 100, то
Код: Выделить всё
n = Int(25 + 76 * Rnd)

Ты хоть сам понял что написал?
Если по твоему примеру
Код: Выделить всё
n = Int(25+76...)

Уже 101!

А если ещё и RND...

Корче ошибочка у тебя вышла!!!

Код: Выделить всё
n = Cint(Rnd()*99)+1

Roman-vb
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 24.01.2006 (Вт) 18:31
Откуда: БРЯНСК

Сообщение Roman-vb » 01.04.2006 (Сб) 16:49

neic
То, что я писал, проверенно годами. Данный пример логически обоснован. Сначала протестируй, а протом говори! :!:
А что же пишете вы (прошу прощения, но это ничто иное, как бред сумасшедшего! :D ):
Код:
n = Cint(Rnd()*99)+1

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 01.04.2006 (Сб) 17:05

По твоему код
Код: Выделить всё
Int(Rnd(1)*99)+1
бред сумасшедшего? :?
А я все практикую лечение травами...

Roman-vb
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 24.01.2006 (Вт) 18:31
Откуда: БРЯНСК

Сообщение Roman-vb » 01.04.2006 (Сб) 17:09

Twister
Во-первых, не InT, я CInt, а, во-вторых, в вопросе было сказано
выбрать число, находящееся в диапазоне от 25 до 100.
Поэтому - бред сумасшедшего, никак иначе! :lol:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.04.2006 (Сб) 17:09

Twister писал(а):По твоему код
Код: Выделить всё
Int(Rnd(1)*99)+1
бред сумасшедшего? :?

Нет. А вот "n = Cint(Rnd()*99)+1" -- да.
Изображение

Morion
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 11.03.2006 (Сб) 15:51
Откуда: Сургут

Сообщение Morion » 01.04.2006 (Сб) 18:24

Спасибо за совет, и за такое разнообразное решение моего вопроса. Попробую все варианты. :!:
Компьютер – отличная вещь! Он позволяет решать все проблемы, которые до изобретения компьютера просто не существовали!..

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

Сообщение alibek » 01.04.2006 (Сб) 18:39

Roman-vb писал(а):Если целое от 25 до 100

Покажи, где автор говорил о целом числе?
Lasciate ogni speranza, voi ch'entrate.

Roman-vb
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 24.01.2006 (Вт) 18:31
Откуда: БРЯНСК

Сообщение Roman-vb » 01.04.2006 (Сб) 18:44

alibek
А чего сразу на меня :?: Не я же начал! Я просто исправил...
Зачем писать (100 - 25)?

n = 25 + CInt(Rnd * 75)

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 01.04.2006 (Сб) 20:38

neic
А вот
MSDN писал(а):To produce random integers in a given range, use this formula:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
[/quote]
Если всё делать своими ручками, они скоро отвалятся !

Roman-vb
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 24.01.2006 (Вт) 18:31
Откуда: БРЯНСК

Сообщение Roman-vb » 01.04.2006 (Сб) 22:04

Kovu
Ну вот! Полностью совпадает с моим вариантом! А neic что-то про ошибку

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 01.04.2006 (Сб) 23:05

neic, конечно, не прав. Он просто не учел, что Rnd возращает число в диапазоне [0,1), т.е. от нуля включительно, но всегда меньше чем 1.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

neic
Жираф
Жираф
 
Сообщения: 492
Зарегистрирован: 13.02.2005 (Вс) 23:44
Откуда: Сланцы

Сообщение neic » 02.04.2006 (Вс) 0:31

Ок просто не заметил! Извиняюсь! Всё правильно, но код мудрённый новичка так заваливать ;-)

Morion
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 11.03.2006 (Сб) 15:51
Откуда: Сургут

Сообщение Morion » 02.04.2006 (Вс) 9:54

Ещё раз спасибо! :!: Попробовал я различные варианты, получается.
Компьютер – отличная вещь! Он позволяет решать все проблемы, которые до изобретения компьютера просто не существовали!..


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 187

    TopList