25.05.2016, 15:34
(
Последний раз редактировалось SoNikMells; 25.05.2016 в 20:36.
)
Заинтересовал меня данный вопрос, в побеге от скуки.
Еще варианты придумал, получше будут.
PHP код:
// число, процент ..... число, процент - в сумме обязательно 100%
// new v = rand(3,70, 78,10, 64,15, 17,5);
stock rand(...) // by SoNik))
{
new x = 0, n = numargs();
if(n % 2) return -1;
static var[100];
for(new i = 1; i < n; i+=2)
{
for(new p = 0; p != getarg(i); p++)
{
if(x == 100) return -1;
var[x++] = getarg(i-1);
}
}
return var[random(100)];
}
PHP код:
// в сумме обязательно 100%
stock rand(...) // by SoNik))
{
new n = numargs();
if(n % 2) return -1;
new s, v, r = random(100);
for(new i = 1; i < n; i+=2)
{
v = getarg(i);
if(s <= r <= s + v) return getarg(i-1);
s += v;
}
return -1;
}
// общее количество процентов неважно, соотношение вычисляется автоматом
// new v = rand(5,10, 7,90, 76,150); - вычтет из 250%
stock rand(...) // by SoNik))
{
new c, n = numargs();
if(n % 2) return -1;
for(new i; i < n; i+=2) c += getarg(i+1);
new s, v, r = random(c);
for(new i = 1; i < n; i+=2)
{
v = getarg(i);
if(s <= r <= s + v) return getarg(i-1);
s += v;
}
return -1;
}