当前位置:首页 » 编程语言 » c语言随机列

c语言随机列

发布时间: 2023-04-27 08:10:07

① 简单c语言程序产生随机数列

提供一个不同的思路,1到20的话范围不大,可以用列举法把这区间的数都列出来,存在数组里,然后随机打乱,可以从任意位置i(0 ≤ i <举唯 16)开始取5个数,取出的数就是亏历随机的了,而且保证不重复。

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

// 初始化有n个元素的数组a,从begin_num开始递增赋值销答搜
void init(int * a, int n, int begin_num)
{
int i;
for(i = 0; i != n; ++i)
a[i] = begin_num++;
}

// 交换
inline void swap(int * a, int * b)
{
int c;
c = *a;
*a = *b;
*b = c;
}

// 随机打乱
void shuffle(int * a, int n)
{
int i;
for(i = 0; i != n; ++i)
swap(&a[i], &a[rand() % n]);
}

// 输出
void output(int * a, int n)
{
while(n != -1)
printf("%2d ", a[n--]);
putchar('\n');
}

int main()
{
int a[20];
int i;

srand((unsigned)time(0));
init(a, 20, 1);

// 测试10组随机数据
for(i = 0; i < 10; ++i)
{
shuffle(a, 20);
output(a, 5);
}

return 0;
}

② c语言输入多个数字组再随机抽取一个列如输入123、345、789、765随机抽取

描述的不太清楚,但是这题的主要难点应该就是随机取列那步,可以使用c语言库函数rand()来实现:

//必须含有这个头文件
#include<stdlib.h>

inta;
//假设一个数唤胡组有顷姿5列,则下面这句话会返回5以内雀链绝的随机数。
a=rand()%5;

这样就可以根据a去取出数组中的随机列上的值

③ 1到25的数字,如何通过C语言实现随机排列

首先不管是不是通过编译
做到随即排列,需要用到随机数产生函数。

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

main()
{
int i;
int cp1[10];
clrscr();

srand((unsigned)time(NULL)); /*随机数发生器,时间作为种子 */

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

cp1[i]=rand()%100+1;/*rand产生的随机数字*/

}

textcolor(12);
for(i=0;i<10;i++)
{
printf("\n");
cprintf("%d",cp1[i]);

}
getch();
}
以上是打印1到100的随机数字。

你说的要随机排列25个数字。
必须要产生25个随机数字。处理方法有很多,可以采用让世银随机数产生为1~25的数字,但是要保证猛运每个数字不一样。不能有重复,这个可以通过比较来完成。然后可以一一对应输出,或者直接输出产生的随机数也可以。另外一种方法是允许有重复,但是必须给每个数字1~25和产生的25个随机数字进行一一对应编号,然后首先按照随机数对应的输出,如果遇到相同的随机数,就随机数先后顺序排下枝返梁来对应输出。方法有很多,自己可以思考一下。

④ c语言如何把一组连续的数随机排开

1 定义一个辅助数组,和原本数组中总数相同。

2 对辅助数组进行随机赋值。

3 对辅助数组进行排序,交换数据时,同时交换源数组中的相同位置。

4 当辅助数组有序后,源数组已经完成随机排序。

代码如下:

voidradom_sort(int*a,intl)
{
int*b;
inti,j,t;
b=(int*)malloc(sizeof(int)*l);
srand(time(NULL));
for(i=0;i<l;i++)
b[i]=rand();
for(i=0;i<l-1;i++)
for(j=i+1;j<l;j++)
{
if(b[i]<b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}

⑤ 用C语言随机打乱一个数列

//稍改动一下
structPOKER
{
intnum;//A:1,J:11,Q:12,K:13小王:14大王:15
intcolor;//黑1,红2,梅3,方4
}s[54];
.....
voidshift()
{
int伍轮宽i,num,color;
memset(s,0,sizeof(structPOKER)*54);
intcount=0;
while(count<54)
{
num=rand()%15+1;
color=rand()%4+1;
intflag_skip=0;
for(i=0;i<54;i++)
{
if((s[i].num==num&&s[i].color==color)||腔亮(s[i].num==14&&num==14)||(s[i].num==15桐桐&&num==15))
{
flag_skip=1;
break;
}
}
if(flag_skip==1)
{
continue;
}
while(1)
{
i=rand()%54;
if(s[i].num==0)
{
s[i].num=num;
s[i].color=color;
count++;
break;
}
else
{
continue;
}
}
}
}

⑥ 简单c语言程序产生随机数列

提供一个不同的思路,1到20的话范围不大,可以用列举法把这区间的数都列出来,存在数组里,然后随机打乱,可以从任意位置镇族i(0
≤慧扒
i
<
16)开始取5个数,取出的数就是随机的了,而且保证不重复。
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
//
初始化有n个元素的数组a,从begin_num开始递增赋值
void
init(int
*
a,
int
n,
int
begin_num)
{
int
i;
for(i
=
0;
i
!=
n;
++i)
a[i]
=
begin_num++;
}
//
交换
inline
void
swap(int
*
a,
int
*
b)
{
int
c;
c
=
*a;
*a
=
*b;
*b
=
c;
}
//
随机打乱
void
shuffle(int
*
a,
int
n)
{
int
i;
for(i
=
0;
i
!=
n;
++i)
swap(&a[i],
&a[rand()
%
n]);
}
//
输出
void
output(int
*
a,
int
n)
{
while(n
!=
-1)
printf("%2d
",
a[n--]);
putchar('\n');
}
int
main()
{
int
a[20];
int
i;
srand((unsigned)time(0));
init(a,
20,
1);
//
测试10组随机数据
for(i
=
0;
i
<御碧弊
10;
++i)
{
shuffle(a,
20);
output(a,
5);
}
return
0;
}

⑦ 请问c语言或matlab程序,如何随机生成一个四行四列的数组,变换的时候整行变换

1/4
打开MATLAB软件,可以看到中间的为命令行,将光标放入其中,准备输入命令。

2/4
输入命令“A=rand(4)”,生成一个4*4的随机数组,数组中的每个数都在(0,1)之间。注意:如果想要生成其他非方阵的数组,可以输入命令“A=rand(x,y)”,其中x代表行,y代表列,即生成一个x行y列的随机数组。

3/4
单击回车键,软件将结果跑出来,如图所示,为一个4*4的随机数组。

4/4
生成随机数成功。

⑧ C语言求有关随机排列的算法,要求是八个人分别随机对应8个数字,求高手

#include "丛兄配stdio.h"
#include "stdlib.h"尘握
#include "渗指time.h"
#define NUM 8
void Rand(int *array, int num)
{
int *table = new int[num];
int i;
for(i=0; i<num; i++) table[i] = 0;
int finsh = 0, r;
while(finsh < num)
{
r = rand() % num;
if(table[r]) continue;
array[finsh++] = r;
table[r] = 1;
}
delete [] table;
}

void main()
{
srand(time(NULL));
int person[NUM];
Rand(person, NUM);
for(int i = 0; i<NUM; i++) printf("%d\t", person[i]);
}

⑨ C语言随机数序列编程:用C语言程序编写。生成随机数序列。范围:1-15要求生成1-15的随机序列,中间无重复

//希望您你有帮助!
#include <stdio.h>
#include <time.h>

int main()
{
int a[15] = {0};
int count = 0;

srand(time(NULL));
while ( 1 )
{
int r = rand()%15 + 1;

if (++a[r] > 1)
continue;
else
{
printf("%02d ", r);
if (count++ > 15)
break;
}
}
return 0;
}
运行结果:07 08 06 14 11 13 01 04 09 02 10 05 12 03

⑩ 用c语言产生随机递增数列

没有,不过给点分的话,本人可以帮你写一个
另,你的问题不是很清楚,比如递增的要求,数列的数据类型
#include <stdio.h>
#include <math.h>
#define N 10
//产生整数的随机数
int itervalrnd(int a,int b,int *r) {//a为下限,b为上限,r为种子
int s,m,ri,t,value;
s= b-a+1;
for (m=2;m<s;m= m+m) {
;
}
ri =*r;
while (1) {
ri =ri*5%(4*m);
t =ri/4+a;
if (t<=b) {
value =t;
break;
}
}
*r =ri;
return value;
}
void main () {
int a,b,r;
int i,t;
int s[N];
printf("The number is :(input a,b,r)\n");
scanf ("%d%d%d",&a,&b,&r);
printf ("The array is :\n");
for (i =0;i<N;i++) {
if (i ==0)
s[i] = itervalrnd(a,b,&r);
else {
t = itervalrnd(a,b,&r);
if (s[i-1]-t ==0) {
i--;
continue;
}
else s[i] = s[i-1]+abs(s[i-1]-t);

}
printf ("%d ",s[i]);
if ((i+1)%10) printf ("\n");
}
}

热点内容
这个锁屏密码是什么 发布:2024-11-01 12:24:51 浏览:91
相机存储卡排名 发布:2024-11-01 12:24:49 浏览:957
androidxml格式化 发布:2024-11-01 12:23:14 浏览:164
Vb6编译是错误不知道错误代码 发布:2024-11-01 12:16:23 浏览:158
局域网电脑访问服务器怎么提速 发布:2024-11-01 12:14:09 浏览:321
美创数据库 发布:2024-11-01 12:05:45 浏览:915
你改爱奇艺密码什么意思 发布:2024-11-01 12:04:48 浏览:408
矩阵分解python 发布:2024-11-01 11:58:23 浏览:367
如何查询微信支付密码修改记录 发布:2024-11-01 11:51:57 浏览:206
如何运维gpu服务器 发布:2024-11-01 11:45:23 浏览:366