无重复随机数

今天给大家带来一个生成不重复的随机数算法范例,为了让代码尽量简单,所以抛弃了“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 Qiu 原创并发布在 被遗忘的曙光 技术博客

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

仅有 1 条评论

  1. Margaretta

    I was sesiourly at Beijing until I saw this post.

添加新评论