웹마스터 팁

list($usec,$sec) = explode(" ",microtime());

/*
Test: Each get rand sequence are 10time.
ex) 5.3point meaning 5point integer + 3point decimal
*/

/*
PHP Manual 4 본문에 제시된 예문
5.0point - 1time
6.0point - 9time
*/
// $rand = (double)microtime()*1000000;

/*
PHP Manual 4 유저가 포스팅한 예문
decimal 값이 나오는 문제점이 있다.
8.6point - 1time
9.4point - 1time
9.5point - 7time
10.3point - 1time
*/
// $rand = (double)$sec * $usec;

/*
2002-02-17 07:13:45 양창민에 의하여 생성된 알고리듬 - 방법 1
분포는 전항 결과값이 평균적으로 8~10자리인데 최소 자릿수인 8자리에 고정
8.0point - 10time
*/
$rand = explode(".",$usec * $sec); $rand = (double)substr($rand[0]*$rand[1],0,8);

/*
2002-02-18 08:08:05 양창민에 의하여 생성된 알고리듬 - 방법 2
평균분포 9자리를 유지하는 plus연산
9.0point - 9time
10.0point - 1time
*/
// $rand = explode(".",$usec * $sec); $rand = $rand[0] + $rand[1];


mt_srand($rand);
srand($rand);

// ycm_debug( (double)microtime()*1000000  , (double)$sec * $usec ,   $rand );


P.S in 2002-02-21 03:29:17
위 마지막 ycm_debug() 는  위의 각 시드 배정방법들의 작용결과를
테스트하기 위하여 10단계 히스토리 3원소 나열하는 form 구조체로서
해당 시드별 생성 난수 분포를 파악하기 위하여 만든 함수로,
위의 함수를 바탕으로 무수한 난수결과값을 얻는 과정을 거쳐
해당 시드별 난수 분포 유형을 명확히 파악한 뒤
다른 분들 참고하길 바라는 마음에 적은 것인데...
개선요지는
- 가능한 integer값의 분포가 0~9까지 골고루 될 것.
- 자릿수 변화가 적을 것.
- 연산시간상 불리함을 최소화할 것.
참고로 저는 홈퓌 방문자에게 메인 대문역할 게시판에 38원소 배열,
BGM 플레이어에서 곡 인덱싱에 사용되는 30~100원소 배열,
게시판 메뉴 칼러 패턴을 얻는데 사용되는 컬러코드값 3원소 배열,
상단 타이틀 배경색에 사용되는 컬러코드값 3원소 배열들에
대하여 난수를 사용하는데 정밀 난수가 필요치않아
그냥 5-7포인트정도 integer 값이 나오는(위 주석처리안된) 사용중인데
아무리 난수발생알고리듬이 뛰어나도 필연적으로 중복값은 발생하죠.
그 중복값 발생의 빈도를 줄이고자 시드배정 방법을 달리하는 것인데
(요 부분 제가 와서 찜찜해 수정 ^^ 아공 배고파랑..)
이 부분에 있어 난수의 한계성을 느끼고 궁극적으로 전체 배열값에서
결코 중복되지않도록 하는 다른 알고리듬 구현을 모색하다가
그냥 최대효과, 최소소요시간에 만족하기로 한 상태입니다.
제목 글쓴이 날짜
좋은 난수값을 얻기위한 시드배정 방법 mt_srand(), srand() 차카게살자 2002.02.21
필터링조금 다른거.. [7] 두기두바 2002.02.10
한글 필터링 정확히 하기 [1] mini 2002.02.09
원고지 함수;; [3] 디쓰 2002.02.07
md5() 알고리듬 [8] 양창민 2002.02.05
이제 홈페이지 업데이트 안하는 수모를 겪지 말자! [7] 담배를끊으면복이옴과 2002.02.02
이제 PHP에 ?id=가나다라 같은것을 넣자! [12] 담배를끊으면복이옴과 2002.01.30
초보분들을 위한 연산자 총정리 [6] TheMics 2002.01.29
[PHP]모르는 분이 있는듯 해서...변수관련 [2] TheMics 2002.01.24
cron을 이용해 윈앰프 방송정보를 빠르게 분석. [9] Romeo 2002.01.15
파일시스템에서 비밀번호 생성/수정/인증 [7] 두기두바 2002.01.10
파일시스템(배열)에서의 검색기능 [5] 두기두바 2002.01.09
[추천 팁] 디망쉬식 스킨 시스템 [4] 디망쉬 2001.12.11
[추천 소스] phpMyAdmin 다중사용자용... [5] WOWpc 2001.11.29
MySQL에서 한글 정렬 문제 [2] 손정호 2001.11.21
phpMyAdmin에서 dump 안 되시는 분들 보세요 [5] 똥가리 2001.11.18
컴에 phpMyAdmin 깔고 원격 Mysql 관리.(이것도 팁이 되려나?) [1] 최형삼 2001.11.17
[추천 소스] 특정일로부터 몇일 지났나 또는 몇일 남았나 알아보는 소스 ㅡ.ㅡ; [1] 타스케 2001.11.15
게시판 만들 때 스팸메일을 막을 수 있는 방법중 한개. [11] WOWpc 2001.11.09
[GD] 이미지 회전 함수 공개합니다. [7] 노경민 2001.11.05