Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Рандомное время в setInterval (https://javascript.ru/forum/misc/24338-randomnoe-vremya-v-setinterval.html)

Vampir3 26.12.2011 19:10

Рандомное время в setInterval
 
есть функция:

function test(){

alert('random alert');

}

нужно чтоб функция выполнялась в разное время (от 1 до 10 секунд)

setInterval('test()' //тут рандомное время);

можно создать переменную с Math.random() и вставить переменную вместо времени?

Livaanderiamarum 26.12.2011 19:24

//рандом от min до max
function rand(min, max){
return (max-min)*Math.random()+min
}

// команда return означает то, что функция будет подставлять НА СВОЕ МЕСТО после того как выполнится)))
// в данном случае подставляется то, что посчитает выражение (max-min)*Math.random()+min, а оно подсчитает случайное число между числами min и max включая)

//тест()
function test(){
alert('ня!')
}

//запускаем тест() используя рандом
setInterval('test()' ,   rand(1000, 10000) );

FINoM 26.12.2011 19:25

function test(text){
  alert('random alert ' + text);
}
(function runInterval() {
    interval = Math.random()*1000*9 + 1000;
    setTimeout(function(){
       test(interval);
       runInterval();
    }, interval);
})()

nerv_ 26.12.2011 19:26

Если не накосячил, а за мной это сегодня наблюдается :) , примерно так
(function() {
	var x = (Math.random() * 10) + 1 >> 0;
	alert("следующий вызов ~ " + x + " сек.");
	setTimeout(arguments.callee, x * 1000);
})();

Livaanderiamarum 26.12.2011 19:30

мой вариант как обычно лучший)))
помогает понять КАК)) и не содержит ненужных понтов и замыканий и.т.п.))
привет всем)

Livaanderiamarum 26.12.2011 19:48

Цитата:

Сообщение от nerv_ (Сообщение 146251)
Если не накосячил, а за мной это сегодня наблюдается :) , примерно так
(function() {
	var x = (Math.random() * 10) + 1 >> 0;
	alert("следующий вызов ~ " + x + " сек.");
	setTimeout(arguments.callee, x * 1000);
})();

оой, ты использовал рекурсию, в замыкании.. это та круто, теперь объясни это парню ))

Vampir3 26.12.2011 20:27

всем спасибо) выбрал вариант Аватар для Livaanderiamarum'a :)

nerv_ 26.12.2011 20:33

Цитата:

Сообщение от Livaanderiamarum
оой, ты использовал рекурсию, в замыкании.. это та круто, теперь объясни это парню ))

1. Это не круто. Круто пишут старожилы форума. Я пока так не умею :no:
2. Где там замыкание? :)
var x = (Math.random() * 10) + 1 >> 0; //эту строку можно запистаь без скобок, т.е.
var x = Math.random() * 10 + 1 >> 0;

zebra 26.12.2011 20:38

Цитата:

Сообщение от Livaanderiamarum
мой вариант как обычно лучший)))

Цитата:

Сообщение от Livaanderiamarum
setInterval('test()' , rand(1000, 10000) );

eval

Livaanderiamarum 26.12.2011 20:39

Цитата:

Сообщение от nerv_ (Сообщение 146265)
1. Это не круто
2. Где там замыкание? :)
var x = (Math.random() * 10) + 1 >> 0; //эту строку можно запистаь без скобок, т.е.
var x = Math.random() * 10 + 1 >> 0;

я почему-то назвал ссылку на саму себя замыканием) не знаю почему) но все ровно твой пример не оч подходил для данного вопроса)

разве нет)? человеку же не понятно что ты написал) тогда в чем цель твоего обьяснения)? дать готовый вариант? он он не совсем это хотел) я бы предпочел научить его как делать рандом, именно это он и не понимал)


Часовой пояс GMT +3, время: 03:24.