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