QString ResultClient::getRandomString(int nLen)
	    qsrand(QDateTime::currentMSecsSinceEpoch());
		const char ch[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		int size = sizeof(ch);
		char* str = new char[nLen + 1];
		int num = 0;
		for (int nIndex = 0; nIndex < nLen; ++nIndex)
		    num = rand() % (size - 1);
		    str[nIndex] = ch[num];
		str[nLen] = '\0';
		QString res(str);
		return res;
  • 使用UUID生成
    Qt 中,有更简单的生成方式,Qt提供了生成UUID(全球唯一识别码)的接口,因此我们可以生成UUID之后,取UUID中的n位作为随机字符串。

    Qt生成的UUID格式:

    {00000000-0000-0000-0000-000000000000}

	QString ResultClient::getRandomString(int nLen = 5)
		int nLen = rand() % 10;
		nLen = nLen < 5 ? 5 : nLen;	//随机数取余10可能存在为0的情况,为0时取长度为5
		QString strUUID = QUuid::createUuid().toString().remove("{").remove("}").remove("-");
		return strUUID.right(nLen);
我们都知道,使用Qt的qrand()可以生成一个随机的数字,比如说,要生成100以内的随机数,可以使用qrand()%100 来实现,那么如果要生成一个固定长度的随机字符串该怎么弄呢,其实原理很简单,就是事先准备好一个字符串数组,然后结合qrand()函数随机字符串数组中通过循环取出来就可以啦。
原理已经说过了,其实就是一个非常简单的算法,直接看代码:
QString getRa...
                                    在编写QT项目时,产生随机数和随机字符串是十分常见的需求,使用qrand函数就能够实现
但是我们也知道,如果不使用种子的话,产生的随机数并不是真正的随机数,而是固定的数字
通常情况下,我们会使用当前时间作为随机数的种子,以产生真正意义上的随机Qt产生随机数代码如下:
int MainWindow::getRandom(int min,int max)
    qsrand(QTi...
                                    之前写过一篇生成随机密码的文章:C++的生成随机密码
原理其实很简单,事先准备一串字符串,再随机字符串中提取字符。比如说,要生成128以内的随机数,可以使用qrand()%128 来实现,QT版本的代码如下:
#include <QtCore/QCoreApplication>
#include <QDateTime>
#include <QDebug>
QString makeRandomString(int length)
	qsrand(QDateTime
小写字母的ascii码为97开始的26个字母;
用(int)(math.random()*26)来随机0~25之间的整数;接着加上97转为小写字母的整数范围;然后用强制类型转换(char)来转换
问题:如果要生成随机字符串中包含大小写字母呢?
我给出了两种办法:
一种是从大写字母A到小写字母z结束,注意
                                    152018-01-29 09:22:58 +08:00package com.v2ex.random1;import org.apache.commons.lang3.RandomStringUtils;import org.apache.commons.lang3.RandomUtils;/*** Created by corning on 2018/1/29.*/public class R...
                                    void testClass::setRandString(QString & randString){    int max = 8;    QString tmp = QString("0123456789ABCDEFGHIJKLMNOPQRSTUVWZYZ");    QString str = QString();    QTime t;    t= QTime::cu