Войти

Показать полную графическую версию : Где найти программиста?


Avatar-Lion
05-02-2014, 22:35
В общем, нужна простенькая программа под Винду: окошечко, которое заполняется полоской с процентами (ну как при установке программы или игры). Но с одним условием: чтобы каждый процент был случайным, т.е. чтобы +1% или -1% было полностью рандомным и чтобы статус этой полосочки с процентами обновлялся, скажем, несколько раз в секунду. Ну и кнопка закрытия, естественно. Всё. Больше ничего не надо.

У самого просто ни одного знакомого программиста нет, а искать каких-нибудь фрилансеров не умею, да и не хочется заморачиваться так серьезно ради простой программки. В общем, никто не даст контакты человечка, который за бесплатно или N рублей напишет такую вещицу?

Iska
05-02-2014, 22:49
Но с одним условием: чтобы каждый процент был случайным, т.е. чтобы +1% или -1% было полностью рандомным »
Жаль, что у Вас нет и ни одного знакомого математика — он бы Вам подсказал, что в данном случае индикатор останется «танцевать» около начального значения.

Avatar-Lion
05-02-2014, 22:55
Iska, Да, именно это и нужно.

Iska
05-02-2014, 23:37
Avatar-Lion, а смысл? Индикатор же должен «продвигаться» вперёд?

Ну, не знаю — индикатор такого типа:
$i, $j = 0, 0

while($j -le 100) {
Write-Progress -Activity "Search in Progress" -Status "$j% Complete" -PercentComplete $j;
$i++
$j = [math]::Truncate([math]::Log($i) * 10)
}

мне лично больше нравится :lol:.

Avatar-Lion
05-02-2014, 23:38
Iska, Скажем так: он МОЖЕТ продвинуться вперёд, но, как вы понимаете, для этого нужно чтобы очень много раз выпало +1, а не -1.

P.S. Куда этот текст вставить?

Iska
06-02-2014, 00:37
Iska, Скажем так: он МОЖЕТ продвинуться вперёд, но, как вы понимаете, для этого нужно чтобы очень много раз выпало +1, а не -1. »
Даже при том, что случайные числа, генерируемые компьютером, на самом деле всего лишь псевдослучайны — количества выпадающих «+1» и «-1» будет стремиться к равенству. Это обычная теория вероятностей.

P.S. Куда этот текст вставить? »
Это пример «выводящего из себя» индикатора на PowerShell.

Avatar-Lion
06-02-2014, 00:42
Iska, Послушайте, я вроде бы весьма ясно дал понять, что отлично понимаю суть своей просьбы. Да, мне нужно именно то, о чем вы говорите: примерно равный шанс выпадения тех или иных значений. Ваш скрипт попробовал: он не делает того, что я описывал. Он просто заполняет строку до 100% и останавливается. Есть еще идеи?

Iska
06-02-2014, 01:15
Avatar-Lion, я Вас прекрасно понял. Могу показать, как будет выглядеть Ваш заказ. Но давайте внесём хоть какое-то разнообразие — третью вероятность:
$oRandom = New-Object System.Random

$i = 0

while($true) {
$i = [math]::Min([math]::Max(0, $i + [math]::Truncate($oRandom.Next(-1, 2))), 99)

Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i;
}

Avatar-Lion
06-02-2014, 01:27
Iska, Так, ага, это уже больше похоже на правду... Спасибо. А что за третья вероятность? Я просто в этих скриптах все равно ничего не понимаю, поэтому желательно пояснить что к чему.

Iska
06-02-2014, 01:42
Кроме «-1» и «+1» выпадает ещё и «0». Это делает движение индикатора несколько менее равновероятным (хотя на общий итог сие не влияет).

Avatar-Lion
06-02-2014, 01:47
Iska, ОК. А частота обновления индикатора от чего зависит тогда?

Iska
06-02-2014, 02:03
А частота обновления индикатора от чего зависит тогда? »
В данном случае — только от «скорострельности» Вашей машины. Никаких временных задержек там нет.

Avatar-Lion
06-02-2014, 02:11
Iska, А как тогда добавить задержку? Ну скажем, чтобы ±1% осуществлялся раз в полсекунды, например?

И такой вопрос: добавление \ убавление каждого следующего процента - это некое заранее вычисленное действие и поведение индикатора, следовательно, тоже задано заранее на много-много процентов "вперёд" и я теперь просто смотрю нечто вроде фильма? Или же для каждого нового процента индивидуально осуществляется расчёт вероятности и, соответственно, добавление \ убавление каждого процента предсказать невозможно в принципе?

lxa85
06-02-2014, 08:42
Или же для каждого нового процента индивидуально осуществляется расчёт вероятности и, соответственно, добавление \ убавление каждого процента предсказать невозможно в принципе? »
Предсказать в принципе, можно. Просто для данной программы этого никто не будет делать. А так да, для каждого нового процента индивидуально осуществляется расчёт вероятности.
А как тогда добавить задержку? Ну скажем, чтобы ±1% осуществлялся раз в полсекунды, например? »
Start-Sleep -m <Time in milliseconds> Using the Start-Sleep Cmdlet (http://technet.microsoft.com/en-us/library/ee177002.aspx) между фигурных скобок тела цикла.
----
Псевдослучайная двоичная последовательность (http://ru.wikipedia.org/wiki/Псевдослучайная_двоичная_последовательность)

topotun32
06-02-2014, 09:16
Avatar-Lion, Вам на чем программа-то нужна? И цель сего опуса какая?

Iska
06-02-2014, 09:31
А как тогда добавить задержку? Ну скажем, чтобы ±1% осуществлялся раз в полсекунды, например? »
Как указал выше коллега lxa85:
$oRandom = New-Object System.Random

$i = 0

while($true) {
$i = [math]::Min([math]::Max(0, $i + [math]::Truncate($oRandom.Next(-1, 2))), 99)

Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i;
Start-Sleep -Milliseconds 500
}

И такой вопрос: добавление \ убавление каждого следующего процента - это некое заранее вычисленное действие »
Два раза «нет». Во-первых, не добавление/убавление, а добавление/убавление/отсутствие изменений. Во-вторых, не заранее вычисленное, а псевдослучайное.




© OSzone.net 2001-2012