求输入N个不重复的随机数的算法
求输入N个不重复的随机数的算法
[解决办法]
建个数组保存,逐个比较,要效率高些,弄个链表排序,或者二叉树
[解决办法]
弄个二查树,然后往里边放随机数,碰到相等就舍弃掉,不等的插入树中
[解决办法]
//Dev-C++
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num[50],N=10;
num[0]=rand();
for(int x=1;x <N;x++)
{
A: ;
num[x]=rand();
for(int y=0;y <x;y++)
if(num[y]==num[x])
goto A;
}
for(int x=0;x <N;x++)
printf( "%d\n ",num[x]);
system( "PAUSE ");
return 0;
}
[解决办法]
// think in C++ Vol2上有个模板的例子,我抄来改了一小下,嘿嘿。
#include <bitset>
#include <ctime>
#include <iostream>
using namespace std;
const int N=100;
int main()
{
bitset <N> nval=0;
int Ur;
for (int i=0;i <N;++i)
{
srand((unsigned)time(NULL));
while(nval[Ur=rand()%N]);
nval[Ur]=true;
cout < <Ur < < " ";
}
system( "pause ");
}
[解决办法]
HewpKanXue()
你的程序我有一个意见
我觉得应该把
srand((unsigned)time(NULL));
放在外面
因为程序运行时间肯定小于1ms
有很多次产生的随即数 多一样
会做很多重复操作