OpenCV 난수 생 성
개념
1. 일반 컴퓨터 의 랜 덤 수 는 모두 가짜 랜 덤 수 이 고 하나의 진짜 랜 덤 수 (피 드) 를 초기 조건 으로 한 다음 에 일정한 알고리즘 으로 랜 덤 수 서열 을 교체 한다.
2. 난수 의 '피 드' 는 난수 가 발생 하 는 첫 번 째 사용 값 이다. 체 제 는 비교적 복잡 한 함 수 를 통 해 이 피 드 의 값 을 난수 공간의 특정한 점 에 투사 하고 발생 하 는 난수 가 균일 하 게 (또는 정상 분포 에 부합 되 는 등) 공간 을 산책 하 며 앞으로 발생 하 는 난수 가 모두 앞의 난수 와 관련된다.
3.RNG : random number generation 난수 생 성
(저작권 성명): 네트워크 참조
2. opencv 의 함수
1.CvRNG cvRNG(int64 seed);
64 비트 길이 성형 피 드 를 사용 하여 난수 생 성기 상 태 를 초기 화 합 니 다.
cvGetTickCount();
64 비트 의 긴 성형 시간 데 이 터 를 되 돌려 줍 니 다. opencv 에 서 는 CvRNG 를 위 한 전용 피 드 입 니 다.
2.unsigned cvRandInt(CvRNG* rng);
고 르 게 분 포 된 무 작위 32 비트 부호 없 는 정형 값 을 되 돌려 주 고 RNG 의 상 태 를 업데이트 합 니 다.모드 작업 을 사용 하면 경 계 를 확인 하 는 성형 수 치 를 얻 을 수 있 습 니 다.
3.double cvRandReal(CvRNG* rng);
균일 하 게 분 포 된 즉시 부동 소수점 을 되 돌려 주 고 범 위 는 0 - 1 (1 포함 하지 않 음) 이 며 RNG 상 태 를 업데이트 합 니 다.
4. voidcvRandArr( CvRNG* rng, CvArr* arr, int dist_type, CvScalar param1,CvScalar param2 );
난수 로 배열 을 채 우 고 RNG 상 태 를 업데이트 합 니 다.
arr 출력 배열
dist_type 분포 유형: CV_RAND_UNI - 균일 분포 ; CV_RAND_NORMAL - 정상 분포 또는 가우스 분포
param1 분포 의 첫 번 째 매개 변수.균등 하 게 분포 한다 면 그것 은 난수 범위 의 폐 하 경계 이다.정상 분포 라면 난수 의 평균 값 이다.
param2 분포 의 두 번 째 매개 변수.균등 하 게 분포 한다 면 그것 은 난수 범위 의 상경 계 이다.정상 분포 라면 난수 의 표준 차 입 니 다.
예 를 하나 보 겠 습 니 다.
#include"cv.h"
#include"highgui.h"
#include<stdio.h>
intmain()
{
CvRNGrng=cvRNG(0);
inti=0;
for(i=0;i<5;i++)
printf("%d,",cvRandInt(&rng));
printf("
");
for(i=0;i<5;i++)
printf("%f,",cvRandReal(&rng));
printf("
");
}
cvGetTickCount () 는 64 비트 의 긴 정수 시간 데 이 터 를 되 돌려 줍 니 다. OpenCV 에 서 는 CvRNG 를 위 한 전용 피 드 입 니 다.
cvGetTickFrequency()
복귀 시스템 클 럭 주파수
cvRNG()
일반적인 C 언어 srand () 사용 방법 과 마찬가지 로 피 드 를 먼저 주어 야 하지만 srand () 는 unsignedint 의 32 비트 피 드 범 위 를 사용 하고 cvRNG () 는 64 비트 길이 의 정수 피 드 를 사용한다.CvRNG 자료 구 조 를 초기 화 합 니 다. seed 가 0 을 주면 자동 으로 - 1 로 전 환 됩 니 다.cvRNG (64 비트 피 드)
cvRandInt()
고 르 게 분 포 된 32 비트 의 임 의 수 를 되 돌려 통계학 적 전문 명사 로 고 르 게 분포 하 는 것 은 장시간 동안 모든 숫자 가 나타 날 확률 이 같다 는 것 을 나타 내 고 cvRandint () 는 opencv 에서 사용 하 는 공식 이다.
temp= (uint64)(unsigned)temp*1554115554 + (temp >> 32);
이 공식 이름 은 Multiply - with - carry (MWC) generator 로 관심 이 있 으 면 인터넷 에서 '랜 덤 수 생 성기' 를 찾 을 수 있 으 며, Multiply - with - carry 는 64 비트 의 씨앗 을 32 비트 의 랜 덤 수 를 만 드 는 것 이다.unsignedcvRandInt (CvRNG 자료 구조)
cvRandReal()
고 르 게 분포 되 어 있 는 0 ~ 1 사이 의 무 작위 소 수 를 되 돌려 주 고 cvRandReal () 의 공식 은 cvRandInt (rng) * 2.32836436538662890625e - 10 의 방법 으로 cvRandInt (rng) * 2 ^ (- 32), 즉 cvRandInt () 를 무 작위 로 나 눈 결과 (32 위 를 2 의 32 제곱 으로 나 누 기 때문에 나타 나 는 결 과 는 0 ~ 1 사이 의 소수, 즉 무 작위 0 ~ 1 사이 가 될 것 이다.
3. 고정 분포 의 난수 생 성
voidcvRand( CvRandState* state, CvArr* arr );
무 작위 변 수 를 사용 하여 arr 를 채 웁 니 다. 내부 에서 호출 된 cvRandArr, cvRandArr 의 인 자 는 state 에서 제공 합 니 다.
그 중에서 CvRandState 는 무 작위 벡터 를 만 드 는 구조 배열 로 cvRandInit 에서 CvRandState 를 초기 화 합 니 다. 예 를 들 어:
cvRandInit(&rng_state,0, 1, 0xffffffff, CV_RAND_UNI)
초기 화 방법:
cvRandInit (CVRandState 자료 구조, 무 작위 상계, 무 작위 하계, 고 르 게 분 포 된 매개 변수, 분포 유형 지정 (CV RAND UNI)
cvRandInit (CVRandState 자료 구조, 평균 수, 표준 차, 정상 분포 변수, 정상 분포 유형 (CV RAND NORMAL))
예:
CvRandStaterng;
cvRandInit(&rng, 0, 1, -1, CV_RAND_UNI );
또한 cvRandSetRange 는 rng 상태 (CV RAND UNI / CV RAND NORMAL) 를 초기 화하 지 않 은 상태 에서 초기 화 된 rng 범위 및 관련 매개 변 수 를 변경 할 수 있 습 니 다.
예 를 들 면:
cvRandSetRange(&rng, 0, 0.1, 0 );
Rg. disttype = CV RAND NORMAL; / 위 에 Rg 를 CV RAND UNI 상태 로 설정 하고, 현 재 는 CV RAND NORMAL 로 변경
또한 CvRandState 데이터 구조의 매개 변수 내용 을 수정 할 수 있 고 고 르 게 분포 하면 각 채널 의 상하 계 정상 분 포 는 각 채널 의 평균 수, 표준 편차 등 을 수정 할 수 있다.
cvRandSetRange (CvRandState 데이터 구조, 상계 균일 분포, 하계 균일 분포, 목표 채널 데이터)
cvRandSetRange (CvRandState 데이터 구조, 정상 분포 평균 수, 정상 분포 표준 편차, 목표 채널 데이터)
채널 이 - 1 이면 모든 채널 을 변경 합 니 다.
cvRandNext 는 cvRandState 조건 에 맞 는 무 작위 수 를 생 성 할 수 있 습 니 다.
unsignedcvRandNext( CvRandState* state );
state
RNGstate initialized by RandInit and, optionally, customized byRandSetRange (though, the latter function does not affect onthe discussed function outcome).
Thefunction cvRandNextreturns uniformly-distributed (regardless of the RNG distributiontype settings) "plain" integer random number and updatesRNG state. It is similar to rand() function from C runtime library,but it always generates 32-bit number whereas rand() returns a numberin between 0 and RAND_MAX which is 2**16 or 2**32, dependingon the platform.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.