Hello, testirovanie!

You must obtain a unique random number in a certain range and put them into an array, but they must be unique in the number and relative gap. In words, it is not clear so here is an example:

I'm calling the function

Now there is a code which is not working due to the lack of RAM, although the logic seems to be correct.

A little explanation to the code:

Function**an int** parameter **step**. For example:

Function**range** website just hangs and after some time throws an error about lack of memory

You must obtain a unique random number in a certain range and put them into an array, but they must be unique in the number and relative gap. In words, it is not clear so here is an example:

I'm calling the function

`getRandomArray(10, 1, 100, 5)`

, where 10 is the number of integers, 1 is the minimum number, 100 is the maximum number of 5 - "a space of uniqueness", then the function has returned a number like 50 and put it in an array. But this array should not be numbers in the range ((50 - 5) - (50 + 5)), those 45-55. That is, in this array should not be numbers 45, 46, 47, 48, ... , 53, 54, 55 and so on.Now there is a code which is not working due to the lack of RAM, although the logic seems to be correct.

```
function rangeByInt(int step) {
var range = [],
startRange = int - step
endRange = int + step;
for (var i = startRange; i <= endRange; i++) {
range.push(i);
}
return range;
},
arrayRandom function(len, min, max) {
var toReturn = [],
tempObj = {},
i = 0;
for (; i < len; i++) {
var randomInt = Math.floor(Math.random() * (max - min + min));
const range = rangeByInt(randomInt, 30);
for (var j = 0; j < range.length; j++) {
if ((tempObj["key_" + randomInt] === undefined) & (tempObj["key_" + tempInt[j]] === undefined)) {
tempObj["key_" + randomInt] = randomInt;
tempObj["key_" + tempInt[j]] = tempInt[j];
toReturn.push(randomInt);
} else {
i--;
}
}
}
return toReturn;
}
}
```

A little explanation to the code:

Function

`rangeByInt`

returns an array with the numbers that are calculated by subtraction and addition of `console.log(rangeByInt(50, 10)) // [40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60]`

Function

`arrayRandom`

takes the following parameters: len - number of digits, min, max - range values for random number generation. But unfortunately, when you add a for loop iterating through asked March 19th 20 at 09:24

2 answers

answered on

Solution

If I understand correctly:

```
getRandoms function(n, min, max, range) {
let possibleNumbers = Array.from(
Array(max - min + 1).keys(), x => x + min);
let randoms = [];
for (let i = 0; i < n; i++) {
if (possibleNumbers.length === 0) {
break;
}
const index = Math.floor(Math.random() * possibleNumbers.length);
const value = possibleNumbers[index];
randoms.push(value);
for (let j = index + range; j > index - range; j--) {
if (possibleNumbers[j] && Math.abs(possibleNumbers[j] - value) < range) {
possibleNumbers.splice(j, 1);
}
}
}
return randoms;
}
```

answered on

Solution

```
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
getRandomArray function(len, min, max, mid) {
const res = [];
let rand;
for (let i = 0; i < len; i++) {
if (Math.random() < 0.5) {
rand = getRandomInt(min, (max - min) / 2 + min - mid);
}
else {
rand = getRandomInt((max - min) / 2 + min + mid, max);
}
Res. push(rand);
}
return res;
}
getRandomArray(10, 100, 1750, 30);
```

https://repl.it/repls/LiveWorthlessJavabytecode

Find more questions by tags Random numbersMathematicsJavaScript

In this conclusion is sometimes not displayed first

For example output

70 - 626

... - 1029 // ... - no number

650 - 1321

851 - 1562

740 - 206

143 - 1427 - Michale_Batz58 commented on March 19th 20 at 09:29

And unless under such conditions and input data in General you can generate 15 numbers? - Dora_Cole commented on March 19th 20 at 09:35