添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


在编写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;
}
}

}



java 怎么获取传进来的泛型类型 java调用泛型方法

代码中主要包含:1、定义泛型类以及实例化2、定义泛型方法以及调用3、泛型继承相关的说明4、泛型通配符的使用package test; import javax.xml.soap.SAAJMetaFactory; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.u

java 字符串 实验题 java字符串实验心得

数据比较浮点数比较1.使用运算符比较两个浮点数,仅当表示这两个数的所有二进制位都相等时,他们才相等。如果进行比较的这两个值是计算后的结果,那么即使这两个值可能非常接近,也未必刚好相等。所以,比较浮点数时,应该尽量少用相等运算符()。 2.检查两个浮点数是否相等的更好方法是,计算两个差值的绝对值,再与公差进行比较。字符比较Java中的字符是基于Unicode字符集的,这个字符集定义了所有可用字符的顺

java Flow 节点编排 java节点流和处理流

JavaIO流_节点流和处理流(重点)节点流是底层流,直接跟数据源相连处理流(包装流)包装节点流,既可以消除不同节点流的是实现差异,亦可以提供方便的方法来完成输入输出(源码理解)处理流对节点流进行包装,使用修饰器设计模式,不会直接与数据源相连处理流的功能更主要体现在以下两个方面: **1.性能的提高:**主要以增加缓存的方式来提高输入的效率**2.操作的便捷:**处理流可能提供了一系列便捷的