Если вам нужно показать временную шкалу прогресса (заранее зная время показа), вы можете использовать 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
секунд.
Да.
Random.NextDouble возвращает значение типа double от 0 до 1. Затем вы умножаете это значение на диапазон, в который нужно войти (разница между максимумом и минимумом), а затем прибавляете его к базовый (минимум).
public double GetRandomNumber(double minimum, double maximum)
{
Random random = new Random();
return random.NextDouble() * (maximum - minimum) + minimum;
}
Реальный код должен иметь случайный статический член. Это сэкономит затраты на создание генератора случайных чисел и позволит вам очень часто вызывать GetRandomNumber. Поскольку мы инициализируем новый ГСЧ при каждом вызове, если вы звоните достаточно быстро, чтобы системное время не изменялось между вызовами, ГСЧ будет заполнен точно такой же меткой времени и сгенерирует один и тот же поток случайных чисел.
Самый простой подход - просто сгенерировать случайное число между 0 и разностью двух чисел. Затем добавьте к результату меньшее из двух чисел.
Вы можете использовать такой код:
public double getRandomNumber(double minimum, double maximum) {
return minimum + randomizer.nextDouble() * (maximum - minimum);
}