#include <iostream>
#include <time.h>
//TIP)C언어 적부터 쓰이던건 .h가 붙는다. C++ 이후에 만들어진 건 안 붙음.
int main()
{
/*
srand: C++에서 제공하는 난수 테이블이다.
이 기능을 이용해서 난수 테이블을 준비한다.
매개변수로 unsigned int값을 받는다. 시드라고 함.
여러 개의 난수 테이블이 존재하고,
시드 값에 해당하는 난수 테이블의 난수값을 뽑아오는 방식임.
난수를 뽑아 올 떄는 rand()를 사용한다.
*/
system("cls"); //이 줄을 넣어주면 콘솔창을 깨끗이 지워준다.
//srand(10);
//
//for (int i = 0; i < 10; ++i)
//{
// std::cout << rand() << std::endl;
//}
/*
* 출력값
71
16899
3272
13694
13697
18296
6722
3012
11726
1899
껐다 켜도 계속 동일한 값이 출력된다. 시드가 동일하기 때문
-> 그러므로 시드값을 계속 바꿔 주어야 어느 정도 예측 불가능한 난수를 뽑을 수 있다.
-> 컴퓨터에서 계속 바뀌는 값을 넣어주면 되는데, 그 시드 값으로 시간을 넣어주면 효과적이다.
*/
//time(0): 현재 시간을 초단위로 환산하여 얻어온다.
//time(0)값음 int 값인데 srand는 unsigned int를 받으므로 형변환을 해 주어야 한다.
std::cout << time(0) << std::endl;
srand((unsigned int)time(0));
for (int i = 0; i < 10; ++i)
{
std::cout << rand() << std::endl;
}
//첫 번째 얻어오는 난수는 값이 Seed에 따라 조금 씩 증가하게 되어있어서 하나는 걸러내준다.
//실무에서 사용하기에는 조금 무리가 있으나
//포트폴리오 수준에서는 충분히 활용할 수 있음.
//TIP)일정 범위 안의 난수를 뽑고 싶을 때는 나머지 연산자를 사용하면 된다.
//0~100까지의 숫자를 뽑고 싶을 떄
std::cout << rand() % 101 << std::endl;
//TIP2)100~150 사이의 값을 뽑고 싶을 때
//rand() % (최대 - 최소 + 1 ) + 최소
std::cout << rand() % (150 - 100 + 1) + 100 << std::endl;
return 0;
}
'C++기초' 카테고리의 다른 글
22년 3월 16일(2) - array (0) | 2022.03.17 |
---|---|
22년 3월 16일(1) - 가위바위보 구현하기 (0) | 2022.03.17 |
22년 3월 15일(2) - while (0) | 2022.03.17 |
22년 3월 15일(1) - for (0) | 2022.03.17 |
22년 3월 15일 (0) | 2022.03.17 |
#include <iostream>
#include <time.h>
//TIP)C언어 적부터 쓰이던건 .h가 붙는다. C++ 이후에 만들어진 건 안 붙음.
int main()
{
/*
srand: C++에서 제공하는 난수 테이블이다.
이 기능을 이용해서 난수 테이블을 준비한다.
매개변수로 unsigned int값을 받는다. 시드라고 함.
여러 개의 난수 테이블이 존재하고,
시드 값에 해당하는 난수 테이블의 난수값을 뽑아오는 방식임.
난수를 뽑아 올 떄는 rand()를 사용한다.
*/
system("cls"); //이 줄을 넣어주면 콘솔창을 깨끗이 지워준다.
//srand(10);
//
//for (int i = 0; i < 10; ++i)
//{
// std::cout << rand() << std::endl;
//}
/*
* 출력값
71
16899
3272
13694
13697
18296
6722
3012
11726
1899
껐다 켜도 계속 동일한 값이 출력된다. 시드가 동일하기 때문
-> 그러므로 시드값을 계속 바꿔 주어야 어느 정도 예측 불가능한 난수를 뽑을 수 있다.
-> 컴퓨터에서 계속 바뀌는 값을 넣어주면 되는데, 그 시드 값으로 시간을 넣어주면 효과적이다.
*/
//time(0): 현재 시간을 초단위로 환산하여 얻어온다.
//time(0)값음 int 값인데 srand는 unsigned int를 받으므로 형변환을 해 주어야 한다.
std::cout << time(0) << std::endl;
srand((unsigned int)time(0));
for (int i = 0; i < 10; ++i)
{
std::cout << rand() << std::endl;
}
//첫 번째 얻어오는 난수는 값이 Seed에 따라 조금 씩 증가하게 되어있어서 하나는 걸러내준다.
//실무에서 사용하기에는 조금 무리가 있으나
//포트폴리오 수준에서는 충분히 활용할 수 있음.
//TIP)일정 범위 안의 난수를 뽑고 싶을 때는 나머지 연산자를 사용하면 된다.
//0~100까지의 숫자를 뽑고 싶을 떄
std::cout << rand() % 101 << std::endl;
//TIP2)100~150 사이의 값을 뽑고 싶을 때
//rand() % (최대 - 최소 + 1 ) + 최소
std::cout << rand() % (150 - 100 + 1) + 100 << std::endl;
return 0;
}
'C++기초' 카테고리의 다른 글
22년 3월 16일(2) - array (0) | 2022.03.17 |
---|---|
22년 3월 16일(1) - 가위바위보 구현하기 (0) | 2022.03.17 |
22년 3월 15일(2) - while (0) | 2022.03.17 |
22년 3월 15일(1) - for (0) | 2022.03.17 |
22년 3월 15일 (0) | 2022.03.17 |