Модификация функции random
День добрый всем , подскажите пожалуйста в реализации логики а именно, модифицированной функции random:
Просто есть задача в случайном порядке попарно вывести числа N раз(расположение парных чисел тоже определяется случайным образом, они не следуют друг за другом), где при условии что N всегда чётное число . И желательно что б функция за один вызов не возвращала массив чисел, а при каждом отдельном вызове возвращала одно число, как это делает функция random. К примеру : var n=8 // функция myRandom должна сгенерировать 4 случайные пары чисел myRandom(n); for(var i=0; i < n; i++){ alert(myRandom()); // Вывод будет к примеру 6,8,1,8,6,3,3,1 } Заранее всем спасибо за то что уделили время на прочтение. |
Цитата:
|
А потом я буду использовать эти числа дальше в программе, мне просто необходимы числа удовлетворяющие этим требованиям как выше.
В целом мне необходимо вывести на экран попарные картинки, всё упёрлось щас в переписывании функции random с заданными , как выше. требованиями |
UhWhat,
что будет если запустить в 9 раз? |
UhWhat,
<script>
Array.prototype.shuffle = function(min,max) {
min = min || 0;
max = ++max || this.length;
var len = max - min;
max = len - this.length;
this.length = len;
for (var a = this.length-1; 0 <= a; a--) {
if(a < max) {break}
var b = Math.floor(Math.random() * a),
c = void 0 === this[b] ? (b + min) : this[b];
this[b] = void 0 === this[a] ? (a + min) : this[a];
this[a] = c
}
this.reverse();
this.length -= max;
return this
};
function myRandom(n) {
var arr = [],
i = 0;
return function() {
if (i == arr.length) {
i = 0;
arr = Array(n / 2).shuffle(0, 9);
arr = arr.concat(arr.slice()).shuffle()
}
var a = arr[i];
i++;
return a
}
};
var s = myRandom(8);
for (var i=0; i<80; i++) { document.write(s()+""); if(!((i+1) % 8) ) document.write("<br>")}
</script>
|
в условии чётко оговорено что функция будет запускаться строго чётное количество раз, ну а если не чётное то я думаю одно число будет непарным.
Ух, спасибо тебе большое Рони, буду изучать сейчас, тобой написанный код. Спасибо мужик ! |
| Часовой пояс GMT +3, время: 09:38. |