当前位置:首页 » 编程语言 » c语言中生成n个随机数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中生成n个随机数

发布时间: 2022-05-01 09:48:13

A. c语言如何编程产生随机数

1、首先打开Visual stdio 2019,依次点击文件,新建,项目新建以一个空白的项目:

B. c语言 数据结构 利用随机函数产生N个随机整数,对这些数进行多种方法进行排序

srand(time(NULL)); //产生随机数
for(i = 0; i < n; i++)
a[i] = rand()%(n - i);

extern void insert(int a[], int x) //插入排序
{
int i;
int n;
int j;
int temp;
n = x;
for(i = 1; i < n; i++)
{
temp = a[i];
j = i - 1;
while(temp < a[j] && j >= 0)
{
a[j + 1] = a[j];
j--;
}
a[j + 1] = temp;
}
}

static void shellsort(int a[], int d, int x)
{
int i;
int j;
int n;
int temp;
n = x;
for(i = d; i < n; i += d)
{
temp = a[i];
j = i - d;
while(a[j] > temp && j >= 0)
{
a[j + d] = a[j];
j -= d;
}
a[j + d] = temp;
}
}
extern void shell(int a[], int x) //希尔排序
{
int n;
int d;
n = x;
d = n / 2;
while(d > 0)
{
shellsort(a, d, n);
d /= 2;
}
}

extern void bubble(int a[], int x) //冒泡排序
{
int ischange;
int i;
int j;
int n;
n = x;
for(i = n - 1; i > 0; i--)
{
ischange = 0;
for(j = 0; j < i; j++)
{
if(a[j + 1] < a[j])
{
a[j + 1] += a[j];
a[j] = a[j + 1] - a[j];
a[j + 1] = a[j + 1] - a[j];

ischange = 1;
}
}
if(0 == ischange)
{
break;
}
}
}

static int partion(int a[], int left, int right)
{
int l;
int r;
int priv;
l = left;
r = right;
priv = a[l];
while(l < r)
{
while(a[r] > priv && r > l)
r--;
if(l < r)
{
a[l++] = a[r];
}
while(a[l] < priv && r > l)
l++;
if(l < r)
{
a[r--] = a[l];
}
}
a[l] = priv;
return l;
}

static void quicksort(int a[], int left, int right)
{
int l;
int r;
int priv;
l = left;
r = right;
if(l < r)
{
priv = partion(a, l, r);
quicksort(a, l, priv - 1);
quicksort(a, priv + 1, r);
}
}
extern void quick(int a[], int n) //快速排序
{
int l;
int r;
l = 0;
r = n - 1;
quicksort(a, l, r);
}

extern void selec(int a[], int x) //选择排序
{
int i;
int j;
int k;
int n;
n = x;
for(i = 0; i < n; i++)
{
k = i;
for(j = i; j < n; j++)
{
if(a[j] < a[k])
{
k = j;
}
}
if(i != k)
{
a[i] += a[k];
a[k] = a[i] - a[k];
a[i] -= a[k];
}
}
}

static void mergearray(int a[], int first, int mid, int last, int p[])
{
int i;
int j;
int k;
i = first;
j = mid + 1;
k = 0;
while(i <= mid && j <= last)
{
if(a[i] <= a[j])
{
p[k++] = a[i++];
}
else
{
p[k++] = a[j++];
}
}
while(i <= mid)
{
p[k++] = a[i++];
}
while(j <= last)
{
p[k++] = a[j++];
}

for(i = 0; i < k; i++)
{
a[first + i] = p[i];
}
}

static void mergesort(int a[], int first, int last, int p[])
{
int mid;
if(last > first)
{
mid = first + (last - first) / 2;
mergesort(a, first, mid, p);
mergesort(a, mid + 1, last, p);
mergearray(a, first, mid, last, p);
}
}

extern void merge(int a[], int n) 归并排序
{
int *p;
p = (int *)malloc(n * sizeof(int));
if(!p)
{
perror("malloc");
exit(-1);
}
mergesort(a, 0, n - 1, p);
free(p);
}

static void swap(int data[], int a, int b)
{
data[a] ^= data[b];
data[b] ^= data[a];
data[a] ^= data[b];
}

static void siftup(int data[], int n) // create heap
{
int i;
int p;
for(i = n; i > 1 && data[p = i / 2] > data[i]; i = p)
swap(data, p, i);
}

static void siftdown(int data[], int n) // adjust heap
{
int i;
int c;
i = 1;
while(1)
{
c = 2 * i;
if(c > n)
break;
if(c + 1 <= n && data[c + 1] < data[c])
c++;
if(data[i] <= data[c])
break;
swap(data, c, i);
i = c;
}
}

static void heapsort(int data[], int n)
{
int i;
for(i = 2; i <= n; i++)
{
siftup(data, i);
}
for(i = n; i >= 2; i--)
{
swap(data, 1, i);
siftdown(data, i - 1);
}
}

extern void heap(int a[], int n) //堆排序
{
int *p;
int i;
p = (int *)malloc((n + 1) * sizeof(int));
if(!p)
{
perror("malloc");
}
for(i = 0; i < n; i++)
*(p + i + 1) = a[i];
heapsort(p, n);
for(i = 0; i < n; i++)
a[i] = *(p + i + 1);
free(p);
}

基数排序根据你是N进制数,申请N个队列,以空间换取时间,排序复杂度为线性o(n)

C. C语言怎样产生一定范围的随机数

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,可以称它为种子。

为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数。

C语言产生一定范围的随机数的源代码如下:

#include<stdio.h>

#include<stdlib.h>

int main()

{

int i;

for(i=0; i<10; i++) //随机产生10个数。

{

printf("%d ", rand());

}

return 0;

}

(3)c语言中生成n个随机数扩展阅读

1、如果要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数。

2、在对rand()的前三次调用中,并且此后得到的返回值仍然是在对rand()的第一批调用中所得到的其余的返回值。因此,只有再次给srand()提供一个随机的“种子”值,才能再次得到一个随机数。

D. 怎样用c语言生成n个随机数

产生一定范围随机数的通用表示公式

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;

要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;

要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;

通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。

要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。

要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。

E. c语言怎么生成随机数

你好!

#include<stdio.h>
#include<stdlib.h>//生成随机数用
#include<time.h>//利用时间生成种子
#include<math.h>

intmain()
{
inti;
inta[100];
srand(time(NULL));//生成种子

for(i=0;i<100;i++)
{
a[i]=rand()%1000+1000;//生成一个小于1000的随机数
//然后加1000,变成1000-2000之间的数
printf("%d",a[i]);//打印
}

i=rand()%100;//随机抽取其中的一个数
printf(" 抽取到的是:%d ",a[i]);//打印


return0;
}

F. c语言怎么利用随机函数产生N个随机整数(20000以上)(好难。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

intmain(intargc,char**argv){

voidgenerate_random(intn);

if(argc>=1)
generate_random(atoi(argv[1]));

return1;
}

voidgenerate_random(intn){

inti;
srand(time(NULL));

for(i=0;i<n;i++){

intr=20000+rand();
printf("%d ",r);
}
}

结果如下:

G. c语言中怎样产生n个和为定值的随机数

如果对符号没有要求,那么可以先产生n-1个随机数,然后用和值减去前n-1个数的总和。
如果要求都是正数,那么可以每获得一个数后,用总和减去这个数,下一次获取0到该数中间的值。这样就得到都是正数了。

H. c语言,如何产生随机数

1、第一步,先定义int一个数组和int一个指针变量。

I. C语言中怎样生成随机数

在VC中设计到随机数有两个函数

srand() and rand()

srand() 的作用是是一个种子,提供每次获得随机数的基数而已,rand()根据种子而产生随机数

注意

1:srand() 里的值必须是动态变化的,否则得到的随机数就是一个固定数

2:其实可以不用写srand() ,只用rand()就可以了,省事,简单,例子如下

如果我们想得到一个 0-60的随机数那么可以写成

int i;

i=rand()%60;

就可以了。

当然最好有个统一的标注如下:

int i;

srand((unsigned)time( NULL ));

i=rand()%60;

这样就OK了。