Как сделать правильный подбор чисел в массиве?

278
23 декабря 2017, 07:26

Есть два массива - число а, которое может принадлежать числам 6,7,8,9 и сумма а и b, которая может принадлежать числам 11,12,13,14. Из массива а наугад выбирается одно из чисел. Далее я искал числа массива b, как разность ab[j]-a[i]

Т.к. a+b принадлежит числам 11,12,13,14, то соответственно в сумме не может быть чисел 10, 15 и т.д.

А у меня такие числа встречаются. Например, 6 и 2, 7 и 3, 9 и 8 и т.д.

Как исключить, например, для 6 цифры 2,3,4 для 7 цифры 2,3,8 и т.д ???

Однако, цифры 2,3,4 нельзя совсем выкидывать из массива, т.к. например, 7+4=11 и т.д.

var a  = [6, 7, 8, 9]; 
console.log( a ); 
console.log( " " ); 
var rand = Math.floor(Math.random() * a.length); 
console.log( a[rand] ); 
console.log( " " ); 
 
var ab = [11, 12, 13, 14]; 
var b = new Array( a.length * ab.length ); 
var c = new Array( a.length * ab.length ); 
 
 
for (var i=0; i<a.length; i++) { 
 
  for (var j=0; j<ab.length; j++) { 
    b[ i*a.length + j ] = ab[j]-a[i]; 
    var randB = Math.floor(Math.random() * b.length); 
  } 
} 
 
console.log( " " ); 
console.log( b ); 
console.log( b[randB] );

Answer 1

Двумерный можно сделать, например, так. Если задача такая, может подойдет. Вообще это не двумерный, а ассоциативный массив получился. В качестве ключей - значения из массива а

var a = [6, 7, 8, 9]; 
console.log(a); 
console.log(" "); 
var rand = Math.floor(Math.random() * a.length); 
console.log('a[rand] = ' + a[rand]); 
console.log(" "); 
 
var ab = [11, 12, 13, 14]; 
var b = {}; 
 
for (var i = 0; i < a.length; i++) { 
  b[a[i]] = new Array(); 
  for (var j = 0; j < ab.length; j++) { 
    b[a[i]][j] = ab[j] - a[i]; 
  } 
} 
 
console.log('массив b для а = ' + a[rand] + ' : ' + b[a[rand]]); 
 
// Случайное число из b: 
rand_b = Math.floor(Math.random() * b[a[rand]].length); 
console.log( 'Случайное число из b: '+ b[a[rand]][rand_b] ); 
 
console.log(b);

READ ALSO
Циклы и Promise

Циклы и Promise

Есть цепочка промисов, первый берет id пользователей из БД, потом по нему нужно достать его группы, и имена конструкторовИ это все может быть...

270
Как правильней использовать mousemove в angular2?

Как правильней использовать mousemove в angular2?

Сделал прокрутку с мышкой налево и направоНо чуть не правильно

219
Видео внутри текста

Видео внутри текста

Нужно в #30 вставить видео (Смотреть Картинку ниже по ссылку) Чтобы в этой цифре с решеткой показывалось видео)))

209
Выбор кратчайшего пункта , используя gmaps api

Выбор кратчайшего пункта , используя gmaps api

ПриветЗнакомлюсь с google maps api и возник такой вопрос

215