2010-07-14 4 views

답변

17

qrand을 사용하여 임의의 숫자를 만들 수 있습니다. 문자열이 필요하면 int를 문자열로 변환 할 수 있습니다. Universally Unique Identifiers를 생성하는 QUuid 클래스를 확인할 수도 있습니다. 이들은 '완전히 무작위'는 아니지만 고유합니다.

+0

답변의 링크가 끊어졌습니다! – zar

11
int number; 
int randomValue = qrand() % number; 

0 < = randomValue < number에 임의의 숫자 randomValue를 반환합니다.

qrand()QtGlobal에 선언되어 있으며 많은 다른 Qt 파일에 포함되어 있습니다.

int value; 
QString aString = QString::number(value); 

정수를 QString로 변환합니다.

2

다음 예에서는 대문자가 A에서 Z, 길이가 len 인 알파벳 문자열을 생성합니다.

QString randString(int len) 
{ 
    QString str; 
    str.resize(len); 
    for (int s = 0; s < len ; ++s) 
     str[s] = QChar('A' + char(qrand() % ('Z' - 'A'))); 

    return str; 
} 
2

이것은 주어진 범위 내에서 난수를 생성하는 아주 좋은 방법은 아닙니다. (실제로 대부분의 발전기에서는 매우 나쁨)

발전기의 하위 비트가 균등하게 분포되어 있다고 가정합니다. 이것은 대부분의 발전기에는 해당되지 않습니다. 대부분의 발전기에서 랜덤은 상위 비트에서 발생합니다.

나누기 후에 나머지를 사용하면 임의성을 제거하는 효과가 있습니다.

곱셈과 나눗셈을 사용하여 크기를 조정해야합니다. 모듈러스 연산자를 사용하지 않습니다. generator_output[0, generator_maximum]에있는 경우 예를 들어

my_numbe r= start_required + (generator_output * range_required)/generator_maximum; 

, my_number[start_required , start_required + range_required]에있을 것입니다.