Модификация функции 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, время: 12:19. |