C语言抽取随机数怎么编写

Python018

C语言抽取随机数怎么编写,第1张

源程序代码以及算法解释如下:

产生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