본문 바로가기
개발/php, javascript

Int 난수 함수로 Float 난수 깔끔하게 발생시키기

by 매몰 2019. 12. 26.

php 에는 float 난수를 발생시키는 함수가 따로 없다.

그래서 int 난수 함수인 rand() 함수를 이용해 float로 변환해야 한다.

 

다음은 float 변수형의 최소, 최댓값을 인수로 받아 float 난수를 반환하는 함수이다.

자주 사용할것 같아 만들어 보았다.

 

function randOnFloat($min, $max) {
    //최소,최대값중에 소수점 자리수가 더 큰쪽을 선택
    $radix_min = radix($min);
    $radix_max = radix($max);
    $radix = $radix_min[front] > $radix_max[front] ? $radix_min : $radix_max;
    
    //입력된 float값을 int값으로 변환후 int난수를 발생시키고 다시 float로 변환한다
    return rand(floor($min * $radix[front]), floor($max * $radix[front])) * $radix[back];
}

private function radixExp($num) {
    //소수점 자리수
    $value = explode(".", $num);
    if (count($value) > 1) {
        return strlen($value[1]);
    }
    
    return 0;
}

private function radix($num) {
    $exp = radixExp($num);
    //int 변환(front) 및 float 변환(back)용 배수
    if ($exp > 0) {
        return Array(front=>pow(10, $exp), back=>pow(10, -$exp));
    }

    return Array(front=>1, back=>1);
}

 

 

 

 

도움이 되셨다면~ 정성으로 빚은 저희 앱!  많은 이용 바래요:)

 

https://meorimal.com/index.html?tab=spaceship

 

우주선 - 방치형 인공지능 투자 체험기

미리 맛보는 인공지능 투자!

(주)머리말 meorimal.com

 

https://meorimal.com/subway.html

 

지하철어디있니

더이상 고민하지 마세요. 뛸지 말지 딱 보면 알죠.

(주)머리말 meorimal.com

 

사업자 정보 표시
주식회사 머리말 | 고영진 | 서울특별시 송파구 중대로 135 서관 10층 (가락동, 아이티벤처타워) | 사업자 등록번호 : 524-88-00727 | TEL : 010-9990-3674 | Mail : gyjmeba@hanmail.net | 통신판매신고번호 : 2017-서울강남-03941호 | 사이버몰의 이용약관 바로가기