Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Генератор случайных чисел

52K
14 марта 2011 года
Sergey198826
94 / / 14.03.2011
Private Sub Command1_Click()
Dim paramA As Double
Dim paramB As Double
Dim i%, r%
paramA = Text1.Text
paramB = Text2.Text
Label1 = ""
Randomize (Timer)
For i = 1 To paramA
r = CInt(Int((paramB - Val(Text3) + 1) * Rnd() + Val(Text3)))
Label1 = Label1 & r & " "
If i Mod 4 = 0 Then Label1 = Label1 & vbCrLf
Next i
End Sub

Это код созданного мною генератора. Подскажите пожалуйста будут ли в этом случае все числа выпадать с одинаковой вероятностью? На одном из форумов я читал что если мы задаем например промежуток от 1 до 11 включительно то, вероятность получить любое число от 2 до 10 включительно будет равна 0.1, а вероятность получения 1 или 11 будет равна 0.05. Это происходит из-за функции CInt, но у меня здесь есть и Int. Что будет в этом случае?
327
14 марта 2011 года
UserNet2008
748 / / 03.04.2010
Не вижу никакой законамерности что с CInt, что без него
52K
15 марта 2011 года
Sergey198826
94 / / 14.03.2011
Благодарю вас!!!
52K
16 марта 2011 года
Sergey198826
94 / / 14.03.2011
Подскажите пожалуйста как переделать мой код так чтобы генератор выдавал значения округленные до 3 знака после запятой?
327
16 марта 2011 года
UserNet2008
748 / / 03.04.2010
Цитата: Sergey198826
Подскажите пожалуйста как переделать мой код так чтобы генератор выдавал значения округленные до 3 знака после запятой?



Подскажите пожалуйста как Вы получаете при таком выражении "[COLOR="#ff00ff"]r = CInt(Int((paramB - Val(Text3) + 1) * Rnd() + Val(Text3)))[/COLOR] " 3 знака после запятой?

52K
16 марта 2011 года
Sergey198826
94 / / 14.03.2011
Цитата: UserNet2008
Подскажите пожалуйста как Вы получаете при таком выражении "[COLOR="#ff00ff"]r = CInt(Int((paramB - Val(Text3) + 1) * Rnd() + Val(Text3)))[/COLOR] " 3 знака после запятой?



В том то и дело что у меня целые числа выходят, а мне нужны дробные, то есть с 3 знаками после запятой

7
17 марта 2011 года
@pixo $oft
3.4K / / 20.09.2006
Почитайте про Format$,должно помочь
52K
18 марта 2011 года
Sergey198826
94 / / 14.03.2011
Посмотрите пожалуйста. Вот код генератора.

Private Sub Command1_Click()
Dim paramA As Double
Dim paramB As Double
Dim i%, r1%, t1%
paramA = Text1.Text
paramB = Text2.Text
Label1 = ""
DoEvents
Randomize (Timer)
r1 = Rnd
For i = 1 To paramA
r1 = Int(Rnd * (paramB + 1))
t1 = (Log(r1 / 100) * (-1)) * (3600 / (paramB + 1))
Label1 = Label1 & t1 & " "
If i Mod 1 = 0 Then Label1 = Label1 & vbCrLf
Next i
End Sub


Параметр А кол-во значений, параметр В - диапазон. Почему когда я задаю данные и нажимаю кнопку он сначала выдает результат, потом еще раз нажимаю опять выдает, а потом выдает ошибку "Неправильный вызов процедуры или аргумент" и подсвечивает эту строчку t1 = (Log(r1 / 100) * (-1)) * (3600 / (paramB + 1))? Быть может я неправильно ввожу логарифм, мне необходимо записать такую функцию (3600/диапазон)*( -Log(случайное число/ 100) )?
7
18 марта 2011 года
@pixo $oft
3.4K / / 20.09.2006
А ты не знал,что логарифма от чисел не более нуля не существует?
7
18 марта 2011 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: UserNet2008
Вы хотели сказать не более единицы

Да неужели?Запусти виндовый калькулятор и посчитай log(0.0001).Дай-ка угадаю,-4 будет?
То-то же.А ну марш учить матчасть![COLOR="#c0c0c0"](вот тут реально МАТчасть:))[/COLOR]

327
18 марта 2011 года
UserNet2008
748 / / 03.04.2010
Private Sub Command1_Click()
Dim paramA As Double
Dim paramB As Double
Dim t1%, r1%
paramA = [COLOR="#ff00ff"]Val[/COLOR](Text1.Text)
paramB = [COLOR="#ff00ff"]Val[/COLOR](Text2.Text)
Label1 = ""
Randomize (Timer)

For i% = 1 To paramA
DoEvents
r1 = Int(Rnd * paramB)
t1 = ([COLOR="#ff00ff"]Log[/COLOR](r1 / 100) * (-1)) * (3600 / paramB)
Label1 = Label1 & [COLOR="#ff00ff"]str[/COLOR](t1) & " "
If i [COLOR="#ff00ff"]Mod[/COLOR] 1 = 0 Then Label1 = Label1 & vbCrLf
Next i
End Sub

[COLOR="blue"]Label1.Caption[/COLOR] или [COLOR="blue"]Label1.Text[/COLOR]
'[COLOR="#ff00ff"]Mod[/COLOR] - операция нахождения остатка от целочисленного деления.
'[COLOR="#ff00ff"]Log[/COLOR] - математическая функция, возращающая натуральный логарифм числового выражения.
'значения [COLOR="#ff00ff"]t1[/COLOR] будет всегда отрицательным например -16,7 или -52,9
'[COLOR="blue"]i[/COLOR] [COLOR="#ff00ff"]Mod[/COLOR] [COLOR="blue"]1[/COLOR] всегда будет равно НУЛЮ
327
18 марта 2011 года
UserNet2008
748 / / 03.04.2010
Цитата: @pixo $oft
А ты не знал,что логарифма от чисел не более нуля не существует?



Вы хотели сказать не более единицы
это я хотел сказать про РАНДОМИЗУ rnd

52K
23 марта 2011 года
Sergey198826
94 / / 14.03.2011
Скажите пожалуйста как сделать так что бы цифре присваивалась буква например


Private Sub Command1_Click()
Dim paramA As Double
Dim paramB As Double
Dim i%, r1%, t1%
paramA = Text1.Text
paramB = Text2.Text

Label1 = ""

For i = 1 To paramA
r1 = Int(Rnd * paramB) + 1
t1 = -Log(r1 / 100) * 3600 / (paramB + 1)

Label1 = Label1 & t1 & vbCrLf
Next i
End Sub

Private Sub Form_Load()
Randomize
End Sub


данный генератор выдает столбик чисел, мне необходимо что бы рядом с каждым из этих чисел появлялись буквы в зависимости от значения числа. Например если число не превышает 100 то рядом сн им указываеться буква (T), если число находиться в диапазоне от 100 до 200 то (M)? Как это осуществить?
327
23 марта 2011 года
UserNet2008
748 / / 03.04.2010
Private Sub Command1_Click()
Dim paramA As Double
Dim paramB As Double
Dim i%, r1%, t1%
paramA = Text1.Text
paramB = Text2.Text

Label1 = ""

For i = 1 To paramA
r1 = Int(Rnd * paramB) + 1
t1 = -Log(r1 / 100) * 3600 / (paramB + 1)

[COLOR="#ff00ff"]select case t1
case 1 to 100
Label1 = Label1 & t1 & "T" & vbCrLf
case 101 to 200
Label1 = Label1 & t1 & "R" & vbCrLf [/COLOR]

[COLOR="#2e8b57"]' И т.к и т.п[/COLOR]

Next i
End Sub
52K
23 марта 2011 года
Sergey198826
94 / / 14.03.2011
Option Explicit

Private Sub Command1_Click()
Dim paramA As Double
Dim paramB As Double
Dim i%, r1%, t1%
paramA = Text1.Text
paramB = Text2.Text

Label1 = ""

For i = 1 To paramA
r1 = Int(Rnd * paramB) + 1
t1 = -Log(r1 / 100) * 3600 / (paramB + 1)

Select Case t1
Case 1 To 100
Label1 = Label1 & t1 & "T" & vbCrLf
Case 101 To 200
Label1 = Label1 & t1 & "R" & vbCrLf
' È ò.ê è ò.ï

Next i
End Sub

Private Sub Form_Load()
Randomize
End Sub

Я ввожу ваш код а он выдает ошибку Next without For?
327
24 марта 2011 года
UserNet2008
748 / / 03.04.2010
For i = 1 To paramA
r1 = Int(Rnd * paramB) + 1
t1 = -Log(r1 / 100) * 3600 / (paramB + 1)

[COLOR="#00bfff"]select case t1
case 1 to 100
Label1 = Label1 & t1 & "T" & vbCrLf
case 101 to 200
Label1 = Label1 & t1 & "R" & vbCrLf [/COLOR]
[COLOR="#ff00ff"]End Select[/COLOR]

Next i
52K
25 марта 2011 года
Sergey198826
94 / / 14.03.2011
Option Explicit

Private Sub Command1_Click()
Dim paramA As Double
Dim paramB As Double
Dim i%, r1%, t1%, i1%, r2%
paramA = Text1.Text
paramB = Text2.Text

Label1 = ""
Label2 = ""
For i = 1 To paramA
r1 = Int(Rnd * paramB) + 1
t1 = -Log(r1 / 100) * 3600 / (paramB + 1)
Label1 = Label1 & r1 & " "
If i Mod 1 = 0 Then Label1 = Label1 & vbCrLf

Next i

For i1 = 1 To paramA
r2 = Int(Rnd * paramB) + 1
Label2 = Label2 & r2 & " "
If i1 Mod 1 = 0 Then Label2 = Label2 & vbCrLf
Next i1

End Sub

Private Sub Form_Load()
Randomize
End Sub

Куда нужно вставить структуру и как ее изменить
select case t1
case 1 to 100
Label1 = Label1 & t1 & "T" & vbCrLf
case 101 to 200
Label1 = Label1 & t1 & "R" & vbCrLf
End Select

чтобы в зависимости от значения r2 буквы присваивались в 1 стобик, то есть к t1?
327
25 марта 2011 года
UserNet2008
748 / / 03.04.2010
Цитата:
чтобы в зависимости от значения r2 буквы присваивались в 1 стобик, то есть к t1?


Может так

For i1 = 1 To paramA
r2 = Int(Rnd * paramB) + 1
Label2 = Label2 & r2 & " "
[COLOR="#48d1cc"]select case r2
case 1 to 100
Label1 = Label1 & t1 & "T" & vbCrLf
case 101 to 200
Label1 = Label1 & t1 & "R" & vbCrLf
End Select[/COLOR]
If i1 Mod 1 = 0 Then Label2 = Label2 & vbCrLf
Next i1

Как должен выглядить 1 столбик 2 столбик ?

52K
25 марта 2011 года
Sergey198826
94 / / 14.03.2011
UserNet2008 не получаеться выдает 2столбика но буквы ставит под первым столбиком копируя одну и туже цифру с буквой
надо чтоб было так
12Т 45
23R 110
34Т 34
и тд
тоесть чтоб он сначала выдал первый столбик, потом второй и в зависимости от числа во втором столбике присваивал букву первому столбику. Вот в примере 45меньше 100 поэтому 12 присваиваеться Т, 110 больше ста поэтому 23 присваиваеться букваR.
327
26 марта 2011 года
UserNet2008
748 / / 03.04.2010
Цитата:
надо чтоб было так
12Т 45
23R 110
34Т 34



Я напишу свой код только мне нужно знать следующее:
1) Вы какой редактор используете VB6?
2) Диапазон чисел paramA и paramB
3) Диапазон 1 столбца и 2 столбца
Как я понял значения 2 столбца зависит на 1 столбец т.е нужно поставить соответствую букву(какой диапазон для букв)

Вреде все

52K
26 марта 2011 года
Sergey198826
94 / / 14.03.2011
UserNet2008
1) Да я пишу в VB6
2) Диапазон paramA и paramB от 0 до 10000
3) колличество чисел и их значение зависит от paramA и paramB
4) 1 и 2 столбик независимы друг от друга это два разных генератора, но буква должна присваиваться 1числу в первом столбике в зависимости от значения 1 числа во втором столбике и тд. Т. е Сначала первый генератор выдает значения t1 при заданых paramA и paramB и записывает столбик чисел, затем второй генератор выдает значения r2 при тех же заданых условиях (paramA и paramB) и выводит столбик чисел. Затем он должен сравнить 1 число во втором столбике с условием если r2 меньше 100 то 1 числу в первом столбике t1 присвоиться буква Т, если r2 больше 100 но меньше 200 то буква R. Затем тоже самое со вторыми числами, потом с третьими и так до конца столбика. Коллич-во чисел в столбике зависит от paramA а их диапазон от paramB.
52K
26 марта 2011 года
Sergey198826
94 / / 14.03.2011
UserNet2008
я сделал вот так

Option Explicit

Private Sub Command1_Click()
Dim paramA As Double
Dim paramB As Double
Dim i%, r1%, t1%, i1%, r2%
paramA = Text1.Text
paramB = Text2.Text

Label1 = ""
Label2 = ""
For i = 1 To paramA
r1 = Int(Rnd * paramB) + 1
t1 = -Log(r1 / 100) * 3600 / (paramB + 1)
Label1 = Label1 & t1 & " "
If i Mod 1 = 0 Then Label1 = Label1 & vbCrLf
Next i

For i1 = 1 To paramA
r2 = Int(Rnd * paramB) + 1
Label2 = Label2 & r2 & " "
If i1 Mod 1 = 0 Then Label2 = Label2 & vbCrLf
Select Case r2
Case 1 To 100
Label3 = Label3 & "T" & vbCrLf
Case 101 To 200
Label3 = Label3 & "R" & vbCrLf
End Select

Next i1

End Sub

Private Sub Form_Load()
Randomize
End Sub

(На форме 3 лебла 2 текстбокса и кнопка) Вроде все нормально но буквы не обновляються а записываються друг под другом, те. нажимаю кнопку выдает 3 столбика например с 12 числами записаными в столбик ( 1 лейбл - 1генератор, 2 лейбл-2 генератор, 3 лейбл - буквы, 3 лейбл на форме стоит между 1 и 2 чтоб буквы были рядом с первым столбиком) нажимаю еще раз столбики с цифрами обновляються а столбик с буквами записываеться вниз под предидущий, надо чтоб обновлялся?
327
26 марта 2011 года
UserNet2008
748 / / 03.04.2010
Sergey198826

Хочу Вам помочь, но запутался полностью. Главное что все просто, но трудно понять чужую мысль.

Цитата:
Сначала первый генератор выдает значения t1


[COLOR="#ff00ff"]t1[/COLOR] - это не ген, а вырожение
[COLOR="#ff00ff"]r1[/COLOR] и [COLOR="#ff00ff"]r2[/COLOR] - это генЫ [COLOR="red"]r2 и for i1 не нужны[/COLOR]
Все нужно сделать в одном Цикле

Только сразу возникает вопрос, если Цикл [COLOR="blue"]For i = 1 To paramA[/COLOR] будет равен 9999, это значит будет 9999 строк, Вы в Label не увидете все строки.
Это пока не главное

Так должны выглядит столбцы
[COLOR="teal"]12Т 45
23R 110
34Т 34[/COLOR]

Довайте разберемся с первой строкой [COLOR="teal"]12Т 45[/COLOR]
[COLOR="teal"]12[/COLOR] - меня интересует какой Label (1,2,3) и переменная (r1 или t1)
[COLOR="teal"]T[/COLOR] - как я понел в данном случаи зависит от числа 45 т.к оно меньше 100
[COLOR="teal"]45[/COLOR] - меня интересует какой Label (1,2,3) и переменная (r1 или t1)

52K
28 марта 2011 года
Sergey198826
94 / / 14.03.2011
UserNet2008 спасибо вам большое! Я сделал так чтобы буквы записывались в отдельный лейбл стоящий рядом с цифрами вроде все нормально, если хатите могу показать что получилось? Только я не заню как загрузить проект на форум((
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог