无重复随机数

今天给大家带来一个生成不重复的随机数算法范例,为了让代码尽量简单,所以抛弃了“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;
            }
        }
    }

}

标签:计算机, 程序, 设计, 常用, 算法, 无重复, 随机数

该文章由 Shiqi 原创并发布在 被遗忘的曙光 技术博客

转载请标明来源:https://blog.fdawn.com/CPP/18.html

仅有 1 条评论

  1. Margaretta

    I was sesiourly at Beijing until I saw this post.

添加新评论