Случайное число между 2 двойными числами

Если вам нужно показать временную шкалу прогресса (заранее зная время показа), вы можете использовать Python следующим образом:

#!/bin/python
from time import sleep
import sys

if len(sys.argv) != 3:
    print "Usage:", sys.argv[0], "<total_time>", "<progressbar_size>"
    exit()

TOTTIME=float(sys.argv[1])
BARSIZE=float(sys.argv[2])

PERCRATE=100.0/TOTTIME
BARRATE=BARSIZE/TOTTIME

for i in range(int(TOTTIME)+1):
    sys.stdout.write('\r')
    s = "[%-"+str(int(BARSIZE))+"s] %d%% "
    sys.stdout.write(s % ('='*int(BARRATE*i), int(PERCRATE*i)))
    sys.stdout.flush()
    SLEEPTIME = 1.0
    if i == int(TOTTIME): SLEEPTIME = 0.1
    sleep(SLEEPTIME)
print ""

Затем, если вы сохранили скрипт Python как progressbar.py, можно отобразить индикатор выполнения из вашего bash-скрипта, выполнив следующую команду:

python progressbar.py 10 50

Он будет отображать индикатор выполнения размером 50 символов и «работает» в течение 10 секунд.

144
задан VansFannel 24 January 2018 в 11:06
поделиться

3 ответа

Да.

Random.NextDouble возвращает значение типа double от 0 до 1. Затем вы умножаете это значение на диапазон, в который нужно войти (разница между максимумом и минимумом), а затем прибавляете его к базовый (минимум).

public double GetRandomNumber(double minimum, double maximum)
{ 
    Random random = new Random();
    return random.NextDouble() * (maximum - minimum) + minimum;
}

Реальный код должен иметь случайный статический член. Это сэкономит затраты на создание генератора случайных чисел и позволит вам очень часто вызывать GetRandomNumber. Поскольку мы инициализируем новый ГСЧ при каждом вызове, если вы звоните достаточно быстро, чтобы системное время не изменялось между вызовами, ГСЧ будет заполнен точно такой же меткой времени и сгенерирует один и тот же поток случайных чисел.

309
ответ дан 23 November 2019 в 22:51
поделиться

Самый простой подход - просто сгенерировать случайное число между 0 и разностью двух чисел. Затем добавьте к результату меньшее из двух чисел.

8
ответ дан 23 November 2019 в 22:51
поделиться

Вы можете использовать такой код:

public double getRandomNumber(double minimum, double maximum) {
    return minimum + randomizer.nextDouble() * (maximum - minimum);
}
3
ответ дан 23 November 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: