Ⅰ c語言隨機函數在某些不連續的數中生成隨機數 求解!!
先臘雹用一個數組儲存這些無規洞陪律的數(n個)
然後生成0至n-1的隨機數(納局蠢用rand()%n)
將隨機數做下標,從無規律數組中取出數字就可以了
Ⅱ C語言,如何生成一列無序的數列
1樓已經把程序寫出來了灶旁游 我就解釋下吧啟嘩
其實要生成隨即數用到2個函數
srand()
和
rand()
當然rand()是可以單獨使用的,不過你會發現每次的數列都是一樣的,所以我們就要用到srand()
,它需要一個參數作為種子,我們要得到不同的數列,所以我們一般取時間作為種子,也就是參數time(0),這隱銷個生成的隨即數的范圍是0-65535(也可能是其他的,根據操作系統定的),要的到10以內的,我們對結果取10為模的余數,這樣就是0-9,然後把結果加1
Ⅲ 如何創建一個由1到n的無序數組。
創建一個有序數臘旦組 1-n
獲得1-n隨機數x 把第1個數定義為x
把之前的有序數輪中擾組取掉x 得到一個n-1長培頃度的數組
獲得1到 n-1的隨機數y 把第二個數定義為y
把有序數組減少到n-2
重復下去 直到有序數組為空
Ⅳ C語言如何產生不重復的隨機數
用一個數組裝隨機數,一個數組表示已經記錄過的隨機數;
比如說隨機0-8,生成一個隨機8位數組且數組內各項不重復;
例:
intarray[8];
intarrayIndex[8]={0,0,0,0,0,0,0,0};
intk=0;
srand(100);
while(k<8){
intq=rand()%8+1;
if(arrayIndex[q-1]==1){
continue;
}
array[k]=q;
arrayIndex[q-1]=1;
k++;
}
(4)c語言如何生成無序數擴展閱讀
C語言隨機輸出1~20不重復的隨機數
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
voidmain()
{
inta[20];
inti,j;
srand((int)time(0));
a[0]=rand()%20+1;
for(i=1;i<20;i++)
{
a[i]=rand()%20+1;
for(j=0;j<i;j++)
{
if(a[i]==a[j])
{
i--;
}
}
}
for(i=0;i<20;i++)
{
printf("%3dn",a[i]);
}
}
Ⅳ C語言常用演算法中,查找無序數列的演算法有哪些
可以用排序+折半查找 代碼如下,編譯軟體DEV C++通過,要查找多少個數只要改一下宏定義就可以了另外要是再優化可以把排序的演算法改一改#define A 10
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,a[A],j,t,b,min,mid,max,p[A],k;
p[0]=1; p[1]=2; p[2]=3; p[3]=4; p[4]=5; p[5]=6; p[6]=7; p[7]=8; p[8]=9; p[9]=10;
printf("請輸入%d個數\n",A);
for(i=0;i<A;i++)
scanf("%d",&a[i]);
for(i=0;i<A;i++)
for(j=i+1;j<A;j++)
if(a[i]>a[j])
{ t=a[i];
k=p[i];
a[i]=a[j];
p[i]=p[j];
a[i]=t;
p[i]=k;
}
printf("請輸入要查找的數字\n");
scanf("%d",&b);
min=0;
mid=A/2;
max=A-1;
for(i=0;i<A;i++)
{if(b==a[min]) {printf("您所輸入的數為第%d個\n",p[min]); break;}
if(b==a[max]) {printf("您所輸入的數為第%d個\n",p[max]); break;}
if(b==a[mid]) {printf("您所輸入的數為第%d個\n",p[mid]); break;}
if(min>=max) {printf("ERROR 您所輸入的數字%d不在此數組內"); break;}
if(b>a[mid])
{min=mid;<br> mid=(min+max)/2;}
if(b<a[mid])
{ max=mid;
mid=(max+min)/2;}
}
system("pause");
}
Ⅵ 請問如何用C語言產生一個四位無重復數字的四位數
可以先把0-9放入一個缺余數組,然後對第一位,隨機生成一個10以內的數如:rand()%8+1(避免高位是0的情況),產生的隨機數來取數組中的中差數,並把數組在該位置以後的數前移,即刪掉該數字。。第二位用rand()%8,得到,從數組中取出該對應位置的數字作為第二位,然後刪掉該數組。。。第三位用rand()%7,第四位用rand()%6。。。這樣就可以生成一個四位無重復賣扮皮數字的四位數了
Ⅶ 用C語言編寫,使用51單片機生成0--9不重復數字。請問用什麼做隨機種子,如何產生不重復隨機數
//正好我在做一個抽獎程序,有一段隨機數去重代碼,你可以借鑒一下。
//這種演算法此磨斗比較節省空間(至少我是這么覺得)
//用一個unsignedint型變數,記錄游盯已生成的隨機數,代碼如下
#include<reg51.h>
#include<stdlib.h>
unsignedintrandom=0x00;
unsignedcharnums[10]={0};
voidmyrand()
{
unsignedchartemp,i;
for(i=0;i<10,++i)
{
temp=rand();
if((random>>temp)&0x01==0x00)
森磨nums[i]=temp;
}
}
//你根據你的需求改吧,求採納。