Кибор » Кибор - Интегрированная среда разработки ботов » Готовые скрипты » Рандом, если не подходит rand...

Страниц (1): [1]
 

1. Kibor - 12 Февраля, 2016 - 10:12:04 - перейти к сообщению
Получение настоящего рандома из текущего времени и псевдо рандома rand вперемешку.
Кому не подходит псевдо рандом rand.
Медленная, использовать только там где действительно есть необходимость..

CODE:

messagebox (mu_random(-1000, 2000));

function mu_random(int p, int p1)
{
if (p==p1) return p;
char c[20], c1[20], c2[40];
int n, n1=0, ran, q, s, rr=p1-p, ti;
string t="", rrrrr=format(gettime());
strcpy(#c[0], rrrrr);
rrrrr=format(rand(0, 999999));
strcpy(#c1[0], rrrrr);
for (n=0; n<20; n++)
{
ti=formatci(c[n]);
if (ti>47 && ti<58)
{
c2[n1]=c[n];
n1++;
}
ti=formatci(c1[n]);
if (ti>47 && ti<58)
{
c2[n1]=c1[n];
n1++;
}
}
c2[n1]=0;
q=size(format(rr));
s=size(#c2[0]);
for (n=0; n<q; n++)t=t+c2[s-n-1];
ran=formatsn (t);
while (ran>rr)ran=ran-rr;
return p+ran;
}
2. Dantes3000 - 08 Августа, 2018 - 03:40:16 - перейти к сообщению
Очень медленная...Для больших чисел совсем не подходит. Как получить рандомное число в миллисекундах от 1 часа до 7 например?
(Добавление)
CODE:
h=3600000;

int c=mu_random(h*2, h*2);

messagebox (c);


function mu_random(int p, int p1)
{
char c[20], c1[20], c2[40];
int n, n1=0, ran, q, s, rr=p1-p;
string t="", rrrrr=format(gettime());
strcpy(#c[0], rrrrr);
rrrrr=format(rand(0, 999999));
strcpy(#c1[0], rrrrr);
for (n=0; n<20; n++)
{
c2[n1]=c[n];
n1++;
c2[n1]=c1[n];
n1++;
}
q=size(format(rr));
s=size(#c2[0]);
for (n=0; n<q; n++)t=t+c2[s-n-1];
ran=formatsn (t);
while (ran>rr)ran=ran-rr;
return p+ran;
}
3. Zireael - 08 Августа, 2018 - 04:56:50 - перейти к сообщению
 Цитата:
Как получить рандомное число в миллисекундах от 1 часа до 7 например?

CODE:
int r=random(1, 7);
messagebox(r);

function random(int h1, int h2)
{
int s=rand(h1, h2)*3600000+
rand(0, 60)*60000+
rand(0, 60)*1000+
rand(0, 1000);
return s;
}
4. Kibor - 08 Августа, 2018 - 05:00:14 - перейти к сообщению
 Dantes3000 пишет:
Очень медленная...Для больших чисел совсем не подходит

А какой рандом хотите получить между
h*2 и h*2 ?
Функция просто зависла на это условие.

CODE:
int h=3600000;

int c=mu_random(-h*2, h*2);

messagebox (c);


function mu_random(int p, int p1)
{
char c[20], c1[20], c2[40];
int n, n1=0, ran, q, s, rr=p1-p;
string t="", rrrrr=format(gettime());
strcpy(#c[0], rrrrr);
rrrrr=format(rand(0, 999999));
strcpy(#c1[0], rrrrr);
for (n=0; n<20; n++)
{
c2[n1]=c[n];
n1++;
c2[n1]=c1[n];
n1++;
}
q=size(format(rr));
s=size(#c2[0]);
for (n=0; n<q; n++)t=t+c2[s-n-1];
ran=formatsn (t);
while (ran>rr)ran=ran-rr;
return p+ran;
}
5. Zireael - 08 Августа, 2018 - 05:25:09 - перейти к сообщению
Функция иногда возвращает отрицательное число.
CODE:
int h=3600000;

loop()
{
int c=mu_random(h, h*2);
if(c<0)messagebox (c);
sleep(1); // убрать если лень ждать
}



function mu_random(int p, int p1)
{
char c[20], c1[20], c2[40];
int n, n1=0, ran, q, s, rr=p1-p;
string t="", rrrrr=format(gettime());
strcpy(#c[0], rrrrr);
rrrrr=format(rand(0, 999999));
strcpy(#c1[0], rrrrr);
for (n=0; n<20; n++)
{
c2[n1]=c[n];
n1++;
c2[n1]=c1[n];
n1++;
}
q=size(format(rr));
s=size(#c2[0]);
for (n=0; n<q; n++)t=t+c2[s-n-1];
ran=formatsn (t);
while (ran>rr)ran=ran-rr;
return p+ran;
}
6. Kibor - 08 Августа, 2018 - 05:54:05 - перейти к сообщению
 Zireael пишет:
Функция иногда возвращает отрицательное число.

Исправил.

Powered by ExBB FM 1.0 Final