c語言隨機列
① 簡單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");
}
}