102 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: cf1111c1c12feddfaeb2bdef
title: Generate Random Whole Numbers within a Range
challengeType: 1
videoUrl: https://scrimba.com/c/cm83yu6
forumTopicId: 18187
localeTitle: Генерировать случайные целые числа в пределах диапазона
---
## Description
<section id='description'>
Вместо того, чтобы генерировать случайное число между нулем и заданным числом, как это было раньше, мы можем сгенерировать случайное число, которое попадает в диапазон двух конкретных чисел. Для этого определим минимальное число <code>min</code> и максимальное число <code>max</code> . Вот формула, которую мы будем использовать. Найдите минутку, чтобы прочитать ее и попытайтесь понять, что делает этот код: <code>Math.floor(Math.random() * (max - min + 1)) + min</code>
</section>
## Instructions
<section id='instructions'>
Создайте функцию <code>randomRange</code> которая принимает диапазон <code>myMin</code> и <code>myMax</code> и возвращает случайное число, которое больше или равно <code>myMin</code> , и меньше или равно <code>myMax</code> включительно.
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: The lowest random number that can be generated by <code>randomRange</code> should be equal to your minimum number, <code>myMin</code>.
testString: assert(calcMin === 5);
- text: The highest random number that can be generated by <code>randomRange</code> should be equal to your maximum number, <code>myMax</code>.
testString: assert(calcMax === 15);
- text: The random number generated by <code>randomRange</code> should be an integer, not a decimal.
testString: assert(randomRange(0,1) % 1 === 0 );
- text: <code>randomRange</code> should use both <code>myMax</code> and <code>myMin</code>, and return a random number in your range.
testString: assert((function(){if(code.match(/myMax/g).length > 1 && code.match(/myMin/g).length > 2 && code.match(/Math.floor/g) && code.match(/Math.random/g)){return true;}else{return false;}})());
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
function ourRandomRange(ourMin, ourMax) {
return Math.floor(Math.random() * (ourMax - ourMin + 1)) + ourMin;
}
ourRandomRange(1, 9);
// Only change code below this line.
function randomRange(myMin, myMax) {
return 0; // Change this line
}
// Change these values to test your function
var myRandom = randomRange(5, 15);
```
</div>
### After Tests
<div id='js-teardown'>
```js
var calcMin = 100;
var calcMax = -100;
for(var i = 0; i < 100; i++) {
var result = randomRange(5,15);
calcMin = Math.min(calcMin, result);
calcMax = Math.max(calcMax, result);
}
(function(){
if(typeof myRandom === 'number') {
return "myRandom = " + myRandom;
} else {
return "myRandom undefined";
}
})()
```
</div>
</section>
## Solution
<section id='solution'>
```js
function randomRange(myMin, myMax) {
return Math.floor(Math.random() * (myMax - myMin + 1)) + myMin;
}
```
</section>