菜鸟笔记
提升您的技术认知

qt生成随机数的方法-ag真人游戏

1.生成随机数

        生成随机数主要用到了函数qsrand和qrand,这两个函数在#include 中,qsrand用来设置一个种子,该种子为qrand生成随机数的起始值。比如说qsrand(10),设置10为种子,那么qrand生成的随机数就在[10,32767]之间。而如果在qrand()前没有调用过qsrand(),那么qrand()就会自动调用qsrand(1),即系统默认将1作为随机数的起始值。使用相同的种子生成的随机数一样。

       下列代码生成了[0,9]之间的10个随机数。

void generaterandomnumber()
{
    qsrand(qtime(0,0,0).secsto(qtime::currenttime()));
    for(int i=0; i<10; i  )
    {
        int test =qrand();
        qdebug()<

        注意代码中使用的种子,这里没有用固定值来作为种子,是希望函数在每次调用(间隔大于1秒)时生成的随机数不一样。

2.生成不重复的随机数

        这个没有特别好的方法,需要自己手动计算,代码如下。

void generateuniquerandomnumber()
{
    int i,j;
    qlist numberslist;
    qsrand(qtime(0,0,0).secsto(qtime::currenttime()));
    for(i=0;i<10;i  )
    {
        numberslist.append(qrand());
        bool flag=true;
        while(flag)
        {
            for(j=0;j

3.生成递增的随机数
        就是在随机数生成后进行排序,qt提供了一个非常好用的排序函数qsort,详细的用法可参考qt帮助。

void generateascendrandomnumber()
{
    int i;
    qlist numberslist;
    qsrand(qtime(0,0,0).secsto(qtime::currenttime()));
    for(i=0;i<10;i  )
    {
        numberslist.append(qrand());
    }
    qsort(numberslist.begin(),numberslist.end());
    for(i=0;i<10;i  )
    {
        qdebug()<

        输出结果如下所示,可以看出qsort默认递增排序,即使数列中包含相同的数。

 

网站地图