C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[921] 난수 발생기...
김상면 [windyboy] 12741 읽음    2009-10-16 21:04
뭐 실전에 사용할려면 보다 깊은 연구가 필요하겠지만
난수에 대해 궁금한 사람에게는 도움이 조금이나마 될겁니다.

절대로 실무에서 그냥 사용하지 마시고 공부만 하세요

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream.h>
#include <stdlib.h>
#include <time.h>

void Random(long& rInt, float& rFloat)
{    rInt = rInt * 843314861 + 453816693;

    if (rInt < 0)
    {    rInt = rInt + 2147483647;
        rInt += 1;
    }

    rFloat = rInt * 0.4656612e-9;
}

int main(int argc, char *argv[])
{      long n = time(NULL);
    float f = n;
    const int max = 255;
    long ar[max] = {0,};

    for(int i = 0; i <65535; i++)
    {    Random(n,f);
        ar[int(f * 100)]++;
    }

    for (int i = 0; i<max; i++)
        printf("%ld  ", ar[i]);


  return EXIT_SUCCESS;
}

그럼
김상면 [windyboy]   2009-10-16 21:22 X
음 잊은게 있는데...

실수 난수만 출력 해보았는데 정수 난수도 출력 가능합니다. 한번 수정 해보세요...
그리고 설명에는 일양 분포를 만족한다고 하는데 XXX입니다. 빈도수가 엄청나게 차이가 납니다.
임의성도 보장된다고 하는데.. 이건 어느정도 수긍이 갑니다.

그럼
Lyn [tohnokanna]   2009-10-16 21:52 X
Tr1 에는 유명한 난수발생기들이 가득 들어있으니 그거 보는것도 괜찮다는 ~_~
김상면 [windyboy]   2009-10-17 08:43 X
헠...

언제나 정곡을 찌르는 고수의 말씀....

난 아직 안되 정말 안되.. 이거 하나 알려고 책을 몇권이나 읽었는데....
TR1에 소스가 있다니 정말이 대략난감....

그럼
이경문 [gilgil]   2009-10-17 17:49 X
kalamazu [kalamazu]   2009-11-13 20:28 X
Mersenne Twister Algorithm을 사용하면 쉽고 빠르게 해결되는데...음

+ -

관련 글 리스트
921 난수 발생기... 김상면 12741 2009/10/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.