1. Generate random numbers
The functions qsrand and qrand are mainly used to generate random numbers. These two functions are in #include <QtGlobal>. qsrand is used to set a seed, which is the starting value for qrand to generate random numbers. For example, qsrand(10), set 10 as the seed, then the random number generated by qrand is between [10, 32767]. If qsrand() has not been called before qrand(), then qrand() will automatically call qsrand(1), that is, the system defaults to 1 as the starting value of the random number. Random numbers generated using the same seed are the same.
The following code generates 10 random numbers between [0,9].
- void generateRandomNumber()
- {
- qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
- for(int i=0; i<10; i++)
- {
- int test = grand ()% 10;
- qDebug()<<test;
- }
- }
2. Generate non-repeating random numbers
There is no particularly good method for this, and you need to calculate it manually. The code is as follows.
- void generateUniqueRandomNumber()
- {
- int i,j;
- QList<int> numbersList;
- qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
- for(i=0;i<10;i++)
- {
- numbersList.append(qrand()%10);
- bool flag=true;
- while(flag)
- {
- for(j=0;j<i;j++)
- {
- if(numbersList[i]==numbersList[j])
- {
- break;
- }
- }
- if(j<i)
- {
- numbersList[i]=rand()%10;
- }
- if(j==i)
- {
- flag=!flag;
- }
- }
- }
- for(i=0;i<10;i++)
- {
- qDebug()<<numbersList[i];
- }
- }
is to sort after random numbers are generated. Qt provides a very useful sorting function qSort. For detailed usage, please refer to Qt Help.
- void generateAscendRandomNumber()
- {
- int i;
- QList<int> numbersList;
- qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
- for(i=0;i<10;i++)
- {
- numbersList.append(qrand()%10);
- }
- qSort(numbersList.begin(),numbersList.end());
- for(i=0;i<10;i++)
- {
- qDebug()<<numbersList[i];
- }
- }