Страница: 1 | 2 | 3 | 4 |
Вопрос: Random
Добавлено: 06.07.05 19:32
Автор вопроса: Gerinych | Web-сайт:
Как можно сделать так чтобы в label по нажатию кнопки генерировалось случайным образом цифра или буква?
Ответы
Всего ответов: 51
Номер ответа: 1
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #1
Добавлено: 06.07.05 20:14
Label1.Caption = Int(Rnd * 10)
End Sub
Номер ответа: 2
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #2
Добавлено: 07.07.05 11:05
Только незабудь Randomize Timer
Номер ответа: 3
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #3
Добавлено: 07.07.05 16:04
Если очень хочется, то можно и забыть
Номер ответа: 4
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #4
Добавлено: 07.07.05 16:22
Даже нужно
Номер ответа: 5
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #5
Добавлено: 07.07.05 21:10
Вне зависимости, инициализируем ли мы датчик случайных чисел, передавая ему в качестве аргумента значение, возвращаемое функцией Timer или нет, вероятность получения повторящегося значения есть в обоих случаях. И в этом можно убедиться, если сгенерировать хотя бы 100 случайных чисел, используя оба варианта.
Номер ответа: 6
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #6
Добавлено: 07.07.05 22:17
2 ActiveX
Смотря в каком диапазоне (если округляется)
Номер ответа: 7
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #7
Добавлено: 08.07.05 00:08
Morpheus
Бессмысленно рассматривать абстрактный пример генерации случайного числового значения в диапазоне от 0 до бесконечности. Так что Вы не погрешите против истины, если будете рассматривать мой предыдущий пост именно в контексте заданного вопроса и моего ответа на него.
Номер ответа: 8
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #8
Добавлено: 08.07.05 10:39
А почему датчик?
Я вот провёл такой эксперимент - две проги с инициализацией генератора и без. Ну так вот, все запущенные экземпляры той что без инициализации генерируют одни и те же числа. Выводы делайте сами.
Вообще я со случайными числами знаком мало, знаю только что они делаются на основе встроенного в процессор счётчика тактов. Сейчас времени совершенно нет, но в будущем обязательно посмотрю что такое Randomize Timer.
Номер ответа: 9
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #9
Добавлено: 08.07.05 13:12
А вот нравиться мне этот термин и всё тут. Но Вы конечно можете использовать и другие словесные обороты.
Если у Вас функция Rnd всегда возвращает одно и тоже числовое значение, то в этом случае, Вам нужно копать именно в сторону этой функции. И для начала можете посмотреть здесь : http://vbnet.ru/vbguide/showfunction.asp?id=5
И когда я говорил, что в обоих вариантах существует вероятность получить последовательно повторящиеся значения, я также, как и Вы основывался на реальной проверке.
P.S. А писать прогу для проверки это уж слишком, достаточно было просто воспользоваться самым первым примером. Разумеется, если под прогой, Вы не подразумеваете классического определения, гласящего, что программой может называться всё, что начинается с Sub и заканчивается End Sub. В таком случае даже одну единственную инструкцию можно гордо назвать программой.
Номер ответа: 10
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #10
Добавлено: 08.07.05 16:44
Нет, в сторону этой функции копать не нужно. Изначально цепочка псевдослучайных чисел строится на каком то базовом числе. Установка базового числа, равным текущему времени позволяет сделать его более случайным. Как показала проверка (8) приложения без инструкции Randomize генерируют всегда одинаковые случайные числа.
Номер ответа: 11
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #11
Добавлено: 08.07.05 18:52
То, что использование функции Randomize "уменьшает" возможность получения повторяющихся значений я никогда не отрицал.
Что касается проверки, то я уже неоднократно говорил, что проверил оба варианта, и в обоих случаях я получал повторящиеся значения (5)(9) Под повторяющимися значением, конечно понимается значение, которое будет равным предыдущему, т.е. 0, 7, [2], [2], 9 ...
Номер ответа: 12
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #12
Добавлено: 08.07.05 22:19
Какие же это случайные числа, если после любого числа не может идти оно же?
Номер ответа: 13
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #13
Добавлено: 09.07.05 00:04
Sharp, речь идёт о том, что по утверждению CyRax при использовании Int(Rnd * 10) всегда генерируются одинаковые случайные числа, т.е. 3, 3, 3 ... а это уже трудно назвать генерацией случайных чисел.
Номер ответа: 14
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #14
Добавлено: 09.07.05 00:52
диапазон надо больше брать: 1000 например и делить на сто
Номер ответа: 15
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #15
Добавлено: 09.07.05 01:39
Morpheus, опять не о том. Речь не идёт о методике генерации случайных чисел. Камнем преткновения является тот факт, что при использовании Int(Rnd * 10) я получаю, например : 0, 7, 2, 2, 9 ... а CyRax 3, 3, 3, 3, 3 ...