⑴ c語言產生不重復的隨機數
#include<iostream.h>
#include<cstdlib>
#include<ctime>
voidmain()
{
inti,j,a[10];
srand(time(0));
for(i=0;i<正盯10;i++)
{
a[i]=rand()%10;
intflag=1;
while(flag==1)//你的這里可能還會產生重此改復的數,這里確保產生的數不再重復,只要有重復的就在隨機新的數。
{
for(j=0;j<i;j++)
if(a[i]==a[j])
break;
if(j<i)
a[i]=rand()%10;
if(j==i)
flag=0;
};
}
for(i=0;i<10;i++)
cout<<a[i]<<endl;
}
這樣就可以了,參考下哈,滿意請采舉扒和納。
⑵ 如何用C語言產生不重復的0到9之間的隨機數
下缺沒面是用C產生0-9的隨機數,rand()函數產生培談的是偽隨機數,反復調用函數rand所產生的一系列數似乎是隨機的,但每次執行程序所產生配扮碰的序列則是重復的。需要用srand()函數每次給不一樣的種子
#include
<stdlib.h>
//標准工具庫,要用到其中的rand()
#include
<stdio.h>
#include<conio.h>
#include
<time.h>
//時間庫,要用到裡面的時間來做隨機數的種子
int
main(void)
{
int
i;
srand(time(NULL));
printf("Ten
random
numbers
from
0
to
9\n\n");
for(i=0;
i<10;
i++)
printf("%d\n",
rand()%10);
getch();
return
0;
}
⑶ c語言生成10個不重復的隨機整數,並輸出
#include<stdio.h>
#include<time.h>
#defineelemTypeint/*元素類型*/
#defineLEN100/*數組長度上限*/
/*生成n項min~max范圍的隨機數並存入數組randArr*/
voidrandomArray(elemTyperandArr[LEN],intn,elemTypemin,elemTypemax){
inti;
srand((unsigned)time(NULL));/*用時間做種,每次產生隨機數不一樣*/
for(i=0;i<n;i++)
randArr[i]=rand(NULL)%(max-min+1)+min;/*產生min~max的隨機數*/
}
/*列印數組*/
voidprintArr(elemTypearr[],intlen){
inti;
for(i=0;i<len;i++)
printf("%d ",arr[i]);
putchar(' ');
}
intmain(void){
elemTypearr[LEN];
intlen=10;/*10個隨機數*/
randomArray(arr,len,1,50);/*隨機生成數組內容*/
printArr(arr,len);
putchar(' ');
getch();/*屏幕暫留*/
return0;
}
運行結果
⑷ 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產生不了不重復的隨機數,所以方法就是把產生的重復的去掉。我這里舉個例子,按照這個思路,插入到你的程序里就行了。
望採納。。。。。。
⑸ 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;
}
⑹ C語言 怎麼產生沒有重復的一組隨機數
隨機數是有幾率產生重復的數,你可以把新產生的跟前面的每一個比較如果有相等的就重新產生。
⑺ 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]);
}
⑻ C語言如何從0-9產生4個不重復的隨機數
利用空間換時間的策略鄭衡,用flag數組保證了數字不會重復,避免每次產生的隨機數都要遍歷一遍數組以避免重復的問題。
而且通過時間作為種哪叢哪子,避免每次的隨機數都一樣!
#include<stdio.h>
#include<stdlib.h>
#include<time.h>李碼
void main()
{
int aim[4],flag[10]={0};
srand(time(NULL));
for(int i=0;i<4;i++)
{
int temp = rand()%10;
if(flag[temp]==0)
{
aim[i]=temp;
flag[temp]=1;
}
else
i--;
}
for(i=0;i<4;i++)
printf("%d ",aim[i]);
printf("\n");
getchar();
}
printf
⑼ C語言程序產生不重復隨機數
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int main()
{
int i,j;
int n[10]; //要產生10個隨機數
int n1=100; //100個隨機數
int n2=51; //從50開始
// n[0]=rand()%n1+n2;//產生50-150的隨機數
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
n[i]=rand()%n1+n2;
while(1) //判斷是否重復賣簡彎
{
for(j=0;j<i;j++)
{
if(n[i]==n[j])
{
n[i]=rand()%n1+n2;
j=0;
break;
}
}
if(j==i)//咐尺新隨機數與前面幾個隨機數都不重復
break;
}
printf("%d\n",n[i]);//產生從50-150的隨機數
}
return 0;
}
//你發的程序少太多東西也不清楚你要表達什麼意思,唯一理解的是你提出的要求,我中悶編了一個程序可以產生不重復隨機數但是不知道有沒有系統函數可以這樣做,把n1改成10很明顯可以看見程序是符合要求的
⑽ 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;
}