Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   Где найти программиста? (http://forum.oszone.net/showthread.php?t=277201)

Avatar-Lion 05-02-2014 22:35 2303598

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

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

Iska 05-02-2014 22:49 2303615

Цитата:

Цитата Avatar-Lion
Но с одним условием: чтобы каждый процент был случайным, т.е. чтобы +1% или -1% было полностью рандомным »

Жаль, что у Вас нет и ни одного знакомого математика — он бы Вам подсказал, что в данном случае индикатор останется «танцевать» около начального значения.

Avatar-Lion 05-02-2014 22:55 2303622

Iska, Да, именно это и нужно.

Iska 05-02-2014 23:37 2303654

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 2303656

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

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

Iska 06-02-2014 00:37 2303694

Цитата:

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

Даже при том, что случайные числа, генерируемые компьютером, на самом деле всего лишь псевдослучайны — количества выпадающих «+1» и «-1» будет стремиться к равенству. Это обычная теория вероятностей.

Цитата:

Цитата Avatar-Lion
P.S. Куда этот текст вставить? »

Это пример «выводящего из себя» индикатора на PowerShell.

Avatar-Lion 06-02-2014 00:42 2303696

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

Iska 06-02-2014 01:15 2303727

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 2303734

Iska, Так, ага, это уже больше похоже на правду... Спасибо. А что за третья вероятность? Я просто в этих скриптах все равно ничего не понимаю, поэтому желательно пояснить что к чему.

Iska 06-02-2014 01:42 2303741

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

Avatar-Lion 06-02-2014 01:47 2303745

Iska, ОК. А частота обновления индикатора от чего зависит тогда?

Iska 06-02-2014 02:03 2303748

Цитата:

Цитата Avatar-Lion
А частота обновления индикатора от чего зависит тогда? »

В данном случае — только от «скорострельности» Вашей машины. Никаких временных задержек там нет.

Avatar-Lion 06-02-2014 02:11 2303749

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

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

lxa85 06-02-2014 08:42 2303798

Цитата:

Цитата Avatar-Lion
Или же для каждого нового процента индивидуально осуществляется расчёт вероятности и, соответственно, добавление \ убавление каждого процента предсказать невозможно в принципе? »

Предсказать в принципе, можно. Просто для данной программы этого никто не будет делать. А так да, для каждого нового процента индивидуально осуществляется расчёт вероятности.
Цитата:

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

Start-Sleep -m <Time in milliseconds> Using the Start-Sleep Cmdlet между фигурных скобок тела цикла.
----
Псевдослучайная двоичная последовательность

topotun32 06-02-2014 09:16 2303813

Avatar-Lion, Вам на чем программа-то нужна? И цель сего опуса какая?

Iska 06-02-2014 09:31 2303817

Цитата:

Цитата Avatar-Lion
А как тогда добавить задержку? Ну скажем, чтобы ±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
}

Цитата:

Цитата Avatar-Lion
И такой вопрос: добавление \ убавление каждого следующего процента - это некое заранее вычисленное действие »

Два раза «нет». Во-первых, не добавление/убавление, а добавление/убавление/отсутствие изменений. Во-вторых, не заранее вычисленное, а псевдослучайное.


Время: 09:02.

Время: 09:02.
© OSzone.net 2001-