在编写QT项目时,产生随机数和随机字符串是十分常见的需求,使用qrand函数就能够实现

但是我们也知道,如果不使用种子的话,产生的随机数并不是真正的随机数,而是固定的数字

通常情况下,我们会使用当前时间作为随机数的种子,以产生真正意义上的随机数

Qt产生随机数代码如下:

int MainWindow::getRandom(int min,int max)
{
qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));

int num = qrand()%(max-min);
qDebug()<<num+min;
}

只需在调用时添加函数的参数即可产生指定范围的随机数

同理,我们也可以利用此方法产生随机字符串

Qt代码如下:

如果想要生成其它字符,将ch中的字符更换即可

QString MainWindow::getRandomString(int length)
{
qsrand(QDateTime::currentMSecsSinceEpoch());

const char ch[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int size = sizeof(ch);

char* str = new char[length + 1];

int num = 0;
for (int i = 0; i < length; ++i)
{
num = rand() % (size - 1);
str[i] = ch[num];
}

QString res(str);
return res;
}

如果我们想要生成不重复的随机数,只需对以上代码稍加改动

将产生的随机数存放到数组中,在每次产生新的随机数的同时,在随机数列表中检查是否包含该数

如果包含则重新生成,直到生成新的随机数为止

具体代码如下:

int MainWindow::getRandom(int min,int max)
{
QList<int> list;
int i,j;
bool res = true;
qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));

for (int i=0; i<10; i++) {
int num = qrand()%(max-min)+min;
list.append(num);

while(res)
{
for(j=0;j<i;j++)
{
if(list[i]==list[j])
break;
}

if(j<i)
{
list[i] = qrand()%(max-min)+min;
}
if(j==i)
res=!res;
}
}

}



centos 日志 查看java centos7怎么查看日志

1  概述    日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。     日志的配置文件是: /et