PDA

Просмотр полной версии : [Вопрос] Нужен разбор кода без умничества просто скажите и все



Hecf
23.08.2017, 10:47
for(new i = size_w - 1; i > -1; i--)
{
sum += array[i];
if(random(sum) < array[i])
{
result = i;
}
}
return result;
}


new array[] = {5, 3, 15, 7, 50, 10};

for(new i; i < 10; i++)
{
printf("%d", randomfear(array));
}


Нужен полный разбор и объяснение каждой функции и т.д

adamand
24.08.2017, 17:26
for(new i = size_w - 1; i > -1; i--) - цикл
sum += array[i]; - задаётся значение для sum
if(random(sum) < array[i]) - проверка если 1 значение меньше второго, то...
{
result = i; - ...результат = i
}

Второй кусок:

new array[] = {5, 3, 15, 7, 50, 10}; - задаётся массив

for(new i; i < 10; i++) - цикл
{
printf("%d", randomfear(array)); - вывод форматированной строки в консоль.
}

Skill
24.08.2017, 18:40
я это итак знаю, мне нужно знать как это работает. Именно sum += array[i] откуда берутся числа, если число было он опять выбирается объясните крч спс)жду

Seregamil
24.08.2017, 18:51
new array[] = {5, 3, 15, 7, 50, 10}; // инициализируется массив с числами

for(new i; i < 10; i++) // цикл от 0 до 9 включительно
{
printf("%d", randomfear(array)); // выводит результат выполнения функции randomfear
}

//Что делает randomfear в душе не чаю, соответственно результат тоже не известен



for(new i = size_w - 1; i > -1; i--) // цикл от максимального значения size_w, откуда оно берется - тоже только Вам известно
// цикл идет до 0
{
sum += array[i]; // к переменной sum добавляется значение из массива array по индексу i
if(random(sum) < array[i]) // если рандомное число от 0 до значения sum меньше значения array[i]
{
result = i; // то результатом назначается это число, по логике вещей тут цикл должен оборваться, ну да ладно
}
}
return result;
}

vasyok28
24.08.2017, 19:31
new array[] = {5, 3, 15, 7, 50, 10}; // инициализируется массив с числами

for(new i; i < 10; i++) // цикл от 0 до 9 включительно
{
printf("%d", randomfear(array)); // выводит результат выполнения функции randomfear
}

//Что делает randomfear в душе не чаю, соответственно результат тоже не известен



for(new i = size_w - 1; i > -1; i--) // цикл от максимального значения size_w, откуда оно берется - тоже только Вам известно
// цикл идет до 0
{
sum += array[i]; // к переменной sum добавляется значение из массива array по индексу i
if(random(sum) < array[i]) // если рандомное число от 0 до значения sum меньше значения array[i]
{
result = i; // то результатом назначается это число, по логике вещей тут цикл должен оборваться, ну да ладно
}
}
return result;
}

По логике не должен, смотри внимательно)

Seregamil
24.08.2017, 20:02
По логике не должен, смотри внимательно)

Ну я по сути и не знаю, где и для чего используется данный код, так что моя логика может отличаться от логики создателя кода)

vasyok28
24.08.2017, 20:16
http://pro-pawn.ru/showthread.php?15134-randomfear%28%29-Рандом-с-вероятностью