1. c語言如何產生隨機不重復的數,我不重復不知道怎麼寫。怎樣不重復
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{inta[10],i,j,k;
srand(time(NULL));
for(i=0;i<10;i++){//採集10個隨機數
a[i]=rand()%90+10;//隨機數賦值
k=0;//重復個數清零
for(j=0;j<i;j++)//計算重復的個數
if(a[i]==a[j])k++;
if(k!=0)i--;//重復個數不為0,就是有重復的
}//重新產生這個隨機數
for(i=0;i<10;i++)
printf("%4d",a[i]);
}
如圖所示,rand產生不了不重復的隨機數,所以方法就是把產生的重復的去掉。我這里舉個例子,按照這個思路,插入到你的程序里就行了。
望採納。。。。。。
2. c語言生成1 - 100的不重復隨機數
c語言生成1 - 100的不重復隨機數?根據你的要求我已經將代碼實現如下
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(){
int a[10];
srand((unsigned)time(NULL));
for(int i=0;i<10;i++){
A: a[i]=rand()%99+1;
for(int j=0;j<i;j++){
a[i]=rand()%99+1;
if(a[i]==a[j])goto A;
else break;
}
}
for(int i=0;i<10;i++)
printf("%d ",a[i]);
}
3. 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++;
}
(3)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]);
}
}
4. C語言如何用rand函數產生4個不重復的隨機數啊
可以將生成的隨機數放入數組中,每次遍歷數組,有相同的重新生成隨機數。知道生成4個即退出循環。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
intnum[4],cnt=0,n;
srand(clock());//設置隨機數種子
while(cnt<4)
{
n=rand()%4;//生成4以內隨機數,這樣更利於測試
for(inti=0;i<cnt;i++)
if(num[i]==n)//遍歷數組,有相同的重新生成隨機數
continue;
num[cnt++]=n;
}
for(inti=0;i<cnt;i++)//列印隨機數數組
printf("%d",num[i]);
return0;
}
5. C語言結構編程中怎樣能產生不重復的隨機數
//讓數不重復,而且每個數都有不好弄,但是如果是生成選手比賽順序,我這種做法就可以了。你把選手的編號放在一個數組裡面,然後從數組的第一個開始,把生成的隨即數當成要交換的下標,隨即交換後就打亂順序了。
雖然產生的隨機數可能一樣,但是這樣打亂順序並不會把選手編號改變了。
例如,
int
tmp,num;
a[10]={1,2,3,4,5,6,7,8,9,10};
srand(time(NULL));
for(int
i=0;i<10;i++)
{
num=rand()%10;
tmp=a[i];
a[i]=a[num];
a[num]=tmp;
}