글
C언어 할 때 알면 좋은 것
C/C
2011. 10. 20. 13:06
1 ( ) [ ] -> .
왼쪽 우선
2 ! ~ ++ -- + -(부호) *(포인터) & sizeof 캐스트
오른쪽 우선
3 *(곱셈) / %
왼쪽 우선
4 + -(덧셈, 뺄셈)
왼쪽 우선
5 << >>
왼쪽 우선
6 < <= > >=
왼쪽 우선
7 == !=
왼쪽 우선
8 &
왼쪽 우선
9 ^
왼쪽 우선
10 |
왼쪽 우선
11 &&
왼쪽 우선
12
||
왼쪽 우선
13
? :
오른쪽 우선
14
= 복합대입
오른쪽 우선
15
,
왼쪽 우선
(6)최대 혹은 최소값 구할 때 초기값 설정
int a;
a = 0x7FFFFFFF; // 가장 큰 수로 보초(sentinel)를 세울 때
int a;
a = 0x80000000; // 가장 작은 수로 보초(sentinel)를 세울 때
rand()%n을 사용하여 난수의 범위를 설정하면, 대부분의 난수 발생기에서 low-order 비트들이 random하지 않으므로,
난수의 분포가 이상적인 일양분포(uniform distribution)를 이루지 않습니다.
예를들어 난수의 범위를 0부터 10까지 지정했을 때 무수히 많은 시행을 한다면 0부터 10까지 각각 해당하는 숫자에 맞는 확률이 비슷하게 나와야 진정한 난수라고 볼 수 있습니다.
그래서 C Programming FAQs에서는 다음과 같은 방법을 권고하고 있습니다.
(int)((double)rand() / ((double)RAND_MAX + 1) * n)
또는,
rand() / (RAND_MAX / n + 1)
'C > C' 카테고리의 다른 글
포인터는 왜 어려울까? (0) | 2011.11.03 |
---|---|
헤더 파일의 중복 정의 막기 (0) | 2011.10.28 |
C언어 - 긴 문자열 초기화 (0) | 2011.10.28 |
c/c++ 2차원(이차원) 배열 동적할당 방법2 (0) | 2011.10.23 |