源程序代码以及算法解释如下:
产生1-10随机数程序:
#include <iostream>
#include <time.h>
using namespace std
int main()
{
const int n = 10//定义随机数个数
int number[n] = { NULL }//定义随机数存储的数组
srand((unsigned)time(NULL))//初始化随机函数
number[0] = rand() % n//第一个随机数无需比较
cout <<number[0] <<" "
for (int i = 1i <ni++)//其余随机数循环产生
{
int j = 0
number[i] = rand() % n//产生随机数
while (1)
{
if (number[i] == number[j])//若有相同则继续循环重新安排随机数
{
number[i] = rand() % n//产生随机数
j = 0//若遇到相同的就从头遍历
continue
}
if (j == (i - 1))//若遍历完就跳出
break
j++
}
cout <<number[i] <<" "
}
cout <<endl
return 0
}
程序运行结果如下:
扩展资料:
利用vector进行随机数输出:
#include <iostream>
#include <vector>
#include <time.h>
using namespace std
int main()
{
const int n = 10
int randnum
vector<int>number
for (int i = 0i <ni++)
{
number.push_back(i + 1) //从尾部添加元素
cout <<number[i] <<" "
}
cout <<endl
srand((unsigned)time(NULL))
for (int j = 0j <nj++) //其余随机数循环产生
{
randnum = rand() % (n - j) //rand函数生成的随机数是0-(n-1)
cout <<number.at(randnum) <<" "
number.erase(number.begin() + randnum)
}
cout <<endl
return 0
}
随机产生一个数,然后每次将数组元素的最后一个数与这个数交换,并且数组的长度减1。
int [] b = new int[100]
int t = 0, idx = 0, len = a.length
for(int i=0i<leni++)
{
idx = [rand()*(len-i)]
b[i] = a[idx]
t = a[idx]
a[idx] = a[len - 1]
a[len - 1] = t
}
return b
int [] b = new int[100]
int t = 0, idx = 0, len = a.length
for(int i=0i<leni++)
{
idx = [rand()*(len-i)]
b[i] = a[idx]
t = a[idx]
a[idx] = a[len - 1]
a[len - 1] = t
}
return b
#include<conio.h>#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void
main()
{
long
a[10000]={0},num
int
i,count=0,countNum=0
time_t
start=0,end=0
srand((unsigned)time(NULL))
for(i=0
i<10000i++)
{
a[i]=rand()%100000+1
printf("%ld
",
a[i])
count++
if(count%10==0)
printf("\n")
}
printf("\n请您输入需要查找的数:\n")
scanf("%ld",&num)
printf("\n您需要查找的数在以下位置出现:\n")
start=time(NULL)
for(i=0
i<10000i++)
{
if(num==a[i])
{
printf("第%d个\n",i+1)
countNum++
}
}
end=time(NULL)
printf("共出现了%d次,累计查找时间为%d秒。\n",countNum,start-end)
getch()
}
由于查询速度很快,所以精确到秒级的计时都为0