반응형
랜덤수를 추출하기 위해서는 내장객체 Math중 Math.random과 Math.foor()를 사용해야한다.
Math 내장 객체중 가장 많이 사용되는 4가지에 대해 먼저 알아보겠다.
- Math.random()
- Math.floor()
- Math.round()
- Math.ceil()
Math.random()
Math.random() 함수는 0 이상 1 미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 반환하며, 이 값은 사용자가 원하는 범위로 변형할 수 있다. 난수 생성 알고리즘에 사용되는 초기값은 구현체가 선택하며, 사용자가 선택하거나 초기화할 수 없다.
구문
0이상 1미만의 난수를 생성하기
<body>
<script>
let a;
a = Math.random()
console.log(a)
/0.19153956196081512
</script>
</body>
Math.floor()
Math.floor() 함수는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환합니다.
= 소숫점 뒤를 잘라버리는 함수
구문
Math.floor(x)
<body>
<script>
console.log(Math.floor(5.95));
// expected output: 5
console.log(Math.floor(5.05));
// expected output: 5
console.log(Math.floor(5));
// expected output: 5
console.log(Math.floor(-5.05));
// expected output: -6
</script>
</body>
매개변수
x= 숫자
반환 값
주어진 수 이하의 가장 큰 정수.
Math.round()
Math.round() 함수는 입력값을 반올림한 수와 가장 가까운 정수 값을 반환합니다.
= 반올림
문법
Math.round(x)
<body>
<script>
console.log(Math.round(0.9));
// expected output: 1
console.log(Math.round(5.95), Math.round(5.5), Math.round(5.05));
// expected output: 6 6 5
console.log(Math.round(-5.05), Math.round(-5.5), Math.round(-5.95));
// expected output: -5 -5 -6
</script>
</body>
매개 변수
x = 수
반환 값
입력값을 반올림한 값과 가장 가까운 정수를 의미합니다.
Math.ceil()
Math.ceil() 함수는 주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자를 integer 로 반환합니다.
= 올림
문법
Math.ceil(x)
<body>
<script>
console.log(Math.ceil(6.1))
console.log(Math.ceil(6.9))
console.log(Math.ceil(5.9))
console.log(Math.ceil(6))
//7
//7
//6
//6
</script>
</body>
매개변수
x 숫자
반환값
주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자
특정 범위 랜덤수 추출하기
<body>
<script>
//0~9의 랜덤수
console.log(Math.floor((Math.random() * 10)))
//0~99의 랜덤수
console.log(randomNum = Math.floor((Math.random() * 100)))
//0~100의 랜덤수
console.log(randomNum = Math.floor((Math.random() * 100 + 1)))
</script>
</body>
예제
특정수 30을 받아 0~30까지의 난수를 생성한뒤 오름차순과 내림차순 배열을 생성하는 버블소트를 각각 만들어 차순 객체를 만들어 입력후 추출하시오.
<body>
<script>
//오름 차순
function asOrder(num)
{
let ranNum = []
let stamp;
//랜덤수 생성
for (let i = 0; i < 10; i++)
{
ranNum[i] = Math.floor(Math.random()*(num+1));
}
//오름차순
for (let i = 0; i < ranNum.length; i++)
{
for (let j = 0; j < ranNum.length - 1; j++)
{
if (ranNum[j] > ranNum[j+1] )
{
stamp = ranNum[j];
ranNum[j] = ranNum[j+1];
ranNum[j+1] = stamp;
}
else
{
ranNum[j] = ranNum[j]
}
}
}
return ranNum;
}
//내림차순
function dsOrder(num)
{
let ranNum = []
let stamp;
//랜덤수 생성
for (let i = 0; i < 10; i++)
{
ranNum[i] = Math.floor(Math.random()*(num+1));
}
//내림차순
for (let i = 0; i < ranNum.length; i++)
{
for (let j = 0; j < ranNum.length - 1; j++)
{
if (ranNum[j] < ranNum[j+1] )
{
stamp = ranNum[j+1];
ranNum[j+1] = ranNum[j];
ranNum[j] = stamp;
}
else
{
ranNum[j] = ranNum[j]
}
}
}
return ranNum;
}
//차순 객체
const orderOb = {}
//객체에 입력
orderOb.asOrder = (asOrder(30))
orderOb.dsOrder = (dsOrder(30))
console.log(orderOb)
</script>
</body>
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] Scope(스코프), Closure(클로저), var (0) | 2022.04.16 |
---|---|
[JavaScript] sort(), 오름차순 정렬, 내림차순 정렬 (0) | 2022.04.14 |
[JavaScript] 두 배열 합치기 (0) | 2022.04.14 |
[JavaScript] 문자열에서 특정한 문자 찾고 문자 추출하기. (0) | 2022.04.14 |
[JavaScript] Primitive type을 Object literal(Object type)으로 변환 (0) | 2022.04.14 |