Более точная функция Rnd() ? Как? How? - VB

Узнай цену своей работы

Формулировка задачи:

Hi guys and ladys. В VBA не особо навичёк, но не "pro". Есть всем известная функция генерации случайных чисел - Rnd(). Синтаксис, следующий:
Всё круто, всё понятно, на всякий случай ещё раз привёл пример. Но, что если у меня (собственно без «если»), возникла необходимость работать со значениями более точными, чем позволяет это делать «Integer». Тут сразу, акцентирую внимание, я уже в курсе, что можно знаком деления решать этот, вопрос (на sl/10; sl/100 и т.п.), good, так же вместо «Int» можно подставить «cDbl», то же «съест». Так проблема, то в том, что как мне задать более конкретный диапазон, значений если функция «берёт» только значения типа «Integer»? Поясню, на примере вот мне нужен диапазон случайных чисел, скажем от «0.5» до «1». Так, вот если я правильно, понимаю он использует не явное преобразование в «Integer» и мои «0.5» превращаются в «1» (по всем известному закону), и так у меня получается диапазон от 1 до 1. Что не то, что мне нужно.
Пока так. Какие решение, мне приходили в голову. Оператором цикла и условия (while и if), генерировать число до тех пор пока я не получу значение в нужном, мне диапазоне, тем самым максимально, близко к нему расширив диапазон функции Rnd(). Но это ж бред, так дела то не делаются, сколько оно так генерировать будет? Ну не долго, если диапазон, чётко подберёшь, а если ошибёшься, так вообще бесконечный цикл получишь. Ну и вроде решил проблему, но осадочек, то остаётся... Да, фигня, вообщем. Ну вот вообщем, кто сталкивался с похожей проблемой прошу, помощи?! :-)

Решение задачи: «Более точная функция Rnd() ? Как? How?»

textual
Листинг программы
Private Sub Form_Load()
    Dim s1 As Double
    'Код с  округлением от 1 до 6 знаков
    Randomize Timer 'Старт генерации (значения текущего времени)
    Do: DoEvents 'Остановить выполнение можно кнопкой паузы или стоп или ctrl+break
        s1 = Round(Rnd / 2 + 0.5, Rnd * 5 \ 1 + 1)
        Debug.Print s1
    Loop
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5