추억6. MSX-BASIC과 HU-BASIC의 RND() 함수의 차이
2008/02/04 09:17
Posted by BLUE'nLIVE Posted in " 컴퓨터야그/컴 관련 추억들 "
BASIC에서 이러한 기능을 하는 함수는 rnd()입니다.SYNOPSIS
#include <stdlib.h>
int rand(void)DESCRIPTION
The rand() function returns a pseudo-random integer between 0 and RAND_MAX.
If no seed value is provided, the rand() function is auto-matically seeded with a value of 1.RETURN VALUE
The rand() function returns a value between 0 and RAND_MAX.
C/C++에서 난수를 발생시키는 함수는 rand() 이고, 0~RAND_MAX(보통 32767) 사이의 난수를 생성합니다.
어릴 때 컴퓨터 학원에서는 SPC-1000을, 집에서는 MSX를 사용하던 시기가 있었습니다.
학원에서 배운 것을 집에서 종종 시험해보고는 했는데, 두 기종 간의 이질감을 발견한 것이 rnd() 함수였습니다.
MSX에서는 매번 실행할 때마다 같은 난수가 나오기 때문에 난수를 난수답게 나오게 할 무엇인가가 필요했는데, SPC-1000은 언제나 다른 난수가 발생했습니다.
난수의 기본구조 즉, 의사 난수(pseude-random number)를 생성한다는 것을 알고 나서 더 놀랍더군요.
의사 난수라는 개념상, 난수는 어떤 식을 통해 생성된 값이므로 같은 조건에서는 같은 결과가 나오거든요…
아래와 같은 코드를 작성해서 계속 실행하면 두 기종에서는 다른 결과를 보여줍니다.
10 A = RND(1)*100 20 PRINT A
이 비밀(?)을 알게된 것이 MSX에서는 난수의 seed를 무작위로 부여하기 위해서 RND(-TIME)을 호출하는데, SPC-1000에서는 이런 기능 자체가 없다는 것을 알면서 부터였습니다.
(C언어의 srand() 호출 방식/개념과 상당히 유사합니다)
한편, C/C++ 언어는 이 부분이 잘 정의되어 있기 때문에 이러한 혼란(?) 없이 사용할 수 있답니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char* argv[])
{
srand( (unsigned)time( NULL ) ); // 난수를 난수답게
int i = rand();
printf("%d\n", i);
return 0;
}'컴퓨터야그 > 컴 관련 추억들' 카테고리의 다른 글
| 한메한글 for Windows 2.5에 대한 추억 (5) | 2008/03/03 |
|---|---|
| 추억6. MSX-BASIC과 HU-BASIC의 RND() 함수의 차이 (2) | 2008/02/04 |
| 추억5. 원라인 컨테스트 - 월간 마이크로소프트웨어 (0) | 2008/02/03 |
| 추억4-부록. MSX-BASIC으로 작성해본 그 프로그램 (0) | 2008/01/30 |
| 추억4. 컴퓨터 경진대회 참가 (4) | 2008/01/30 |
| 추억3. N바이트 한글 (0) | 2008/01/28 |
| 추억2. 처음 산 컴퓨터 FC-30 (2) | 2008/01/27 |
| 추억1. 처음 다뤄본 컴퓨터 SPC-1100 (2) | 2008/01/27 |
Disclaimer: 이 글은 전기통신기본법 제47조 1항에 따른 공익을 해할 목적이 전혀 없음은 물론, 저는 지금 허위의 통신을 한다는 일체의 인식이 없음을 밝힙니다.
이 아름다운 정부가 나라 일을 정말 아름답게 해서 국민들 생활을 최고로 아름답게 만들었으니, 이 어찌 아름답지 않을소냐?
Comments
까만 화면에 파란 텍스트. 전 한 번도 못본 화면이네요.ㅇㅅㅇ
매트릭스 이후로 처음.....
몇년도 OS인가요?
저도 맞트랙백(?)을 ㅎㅎ
1984년요 ^^;;;
당시에는 Z-80이라는 3.xx MHz(GHz 아님) 8비트 CPU를 사용하는 PC가 세상을 지배하고 있었더랍니다.