无重复随机数
今天给大家带来一个生成不重复的随机数算法范例,为了让代码尽量简单,所以抛弃了“while”循环。这个算法主要用了“goto”大法,“goto”大法虽然提高的编写的效率,但破坏了程序的代码结构(把算法封装成了函数,天知道你在函数干什么啊!)。
[注意]
下面的例子都是用C++和Win32控制台程序写的!
范例代码:
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
void create(int rnd[], int n, int minNum, int maxNum);
int main(){
    int rnd[10];
    int n = sizeof(rnd) / sizeof(int);
    create(rnd, n, 10, 20);
    for(int i = 0; i < n; i++){
        cout << setw(5) << rnd[i];
    }
    cout << endl;
    system("pause");
    return 0;
}
void create(int rnd[], int n, int minNum, int maxNum){
    srand(int(time(0)));
    for(int j = 0; j < n; j++){
        re:rnd[j] = rand() % maxNum;
        if(rnd[j] < minNum){
            goto re;
        }
        for(int i = 0; i < j; i++){
            if(rnd[j] == rnd[i]){
                goto re;
            }
        }
    }
}
I was sesiourly at Beijing until I saw this post.