Случайные числа..

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

Случайные числа..

Сообщение Sofist » 10.03.2007 (Сб) 22:29

Помогите решить задачку: есть три числа 2, 23 и 45.. необходимо их генерировать в случайном порядке, причем число 2 должно появлятся с веротность 0,75; число 23 - с 0,15; а 45 - с 0,1... подскажите как это написать на VB...
Заранее спасибо...

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 11.03.2007 (Вс) 19:39

Код: Выделить всё

'вот, как-то так

Dim x As Integer
Dim iVal As Integer
Dim z(2) As Integer 'проверка

Randomize
For x = 0 To 10000
    Select Case Int(Rnd * 100)
    Case 0 To 9 '0,1
        iVal = 2
        z(0) = z(0) + 1
    Case 10 To 24 '0,15
        iVal = 23
        z(1) = z(1) + 1
    Case Else '0,75
        iVal = 45
        z(2) = z(2) + 1
    End Select
    Debug.Print iVal
Next

Debug.Print z(0); Tab; z(1); Tab; z(2)


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

Сообщение alibek » 12.03.2007 (Пн) 10:51

Плохой код. Впрочем, работать будет.
Lasciate ogni speranza, voi ch'entrate.

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 12.03.2007 (Пн) 19:46

Плохой код. Впрочем, работать будет.

Я знаю, согласен, но ответ адекватен вопросу.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 12.03.2007 (Пн) 22:14

Код: Выделить всё
45-23*otr(i-10)-21*otr(i-25)-2*otr(i-100)

Где i - число от 0 до 100, дробное

otr(x) это отрицательность x
otr(x) = (abs(x)+x)/2 по идее лучше просто выделить бит знака, мне просто лениво смотреть где он, а на память не помню.

Во всех непредусмотренных случаях возвращает ноль

Добавленно: правил название функции, потому что нелогично сначала назвал.

PS Сорь за кучу исправлений, видимо не стоит писать код спъяну

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 13.03.2007 (Вт) 23:00

GAGArin писал(а):
Код: Выделить всё
45-23*otr(i-10)-21*otr(i-25)-2*otr(i-100)

Где i - число от 0 до 100, дробное

otr(x) это отрицательность x
otr(x) = (abs(x)+x)/2 по идее лучше просто выделить бит знака, мне просто лениво смотреть где он, а на память не помню.

Во всех непредусмотренных случаях возвращает ноль

Добавленно: правил название функции, потому что нелогично сначала назвал.

PS Сорь за кучу исправлений, видимо не стоит писать код спъяну

ты это вообще всё к чему? :shock:

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

Сообщение alibek » 14.03.2007 (Ср) 8:19

А разве нельзя немного поразмышлять над кодом?
Разумеется, это к теме сабжа. Вместо нормального распределения используются дискретные функции.
Lasciate ogni speranza, voi ch'entrate.


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

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

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 94

    TopList