PDA

Просмотр полной версии : [Function] randomfear() - Рандом с вероятностью



vasyok28
11.04.2017, 00:00
Описание: С помощью данной функции можно реализовать рандом с вероятностью.

Сам код:


randomfear(array[], size_w = sizeof(array))
{
if(size_w < 1) return -1;
new sum = 0, result = 0;

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));
}



Результат: 4 | 5 | 4 | 4 | 4 | 2 | 4 | 3 | 5 | 4

П.С писал для себя, может кому понадобится. На порталах не нашел данную функцию, либо плохо искал. Если уже есть, удалите пожалуйста))))

vovandolg
11.04.2017, 11:45
randomfear(array[], size_w = sizeof(array))
{
if(size_w < 1) return -1;
new sum = 0;

for(new i = size_w - 1; i > 0; i--)
{
sum += array[i];
if(random(sum) < array[i])
{
return i; // нашли число? закончили.. или же надо дальше было искать?
}
}
}

vasyok28
11.04.2017, 12:15
randomfear(array[], size_w = sizeof(array))
{
if(size_w < 1) return -1;
new sum = 0;

for(new i = size_w - 1; i > 0; i--)
{
sum += array[i];
if(random(sum) < array[i])
{
return i; // нашли число? закончили.. или же надо дальше было искать?
}
}
}


Попробуйте:


new array[] = {50, 50, 50};

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