c語言不重復隨機數
㈠ 怎樣用c語言生成10個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語言 rand怎麼產生不重復的隨機數
既然是隨機數,那就是完全隨機的了,系統肯定會產生重復的數據。
如果樓主想要不同的話,那就只能自己判斷了,保存已經出現過的數據,重復出現的話,那就多次獲取吧。
㈢ C語言:如何產生不重復的隨機數字
----------------VC6測試通過----能產生不相同的數--------------------
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int x;
int num[10];//聲明數組。
srand(unsigned(time(NULL)));
for(int i=0;i<6;i++)
{//取6個不重復的整數放到數組num中。
leap:x=rand()%10; //此處我將其改為-9范圍了。你可以改大。
for(int j=0;j<i;j++)//用j<i來作循環條件,因為當i=0時,就可直接插入了;且此時下一個值還未插入。比如:i=4時,實際上,num中只有num[0].num[1]num[2]num[3]四個元素。
{
if(num[j]==x)// 此數組沒聲明。
{
//i=0; //此處不能改寫i的值。如果你改了,就不會循環與數組中的數比較了。當然就可能出現重復的情況了。
goto leap;
}//if
}//for
num[i]=x;// 如果不等就插進數組num相應位置中。
printf("%d ",num[i]); //此處列印時,要空一格,否則數據都連在一起了。
}//for
printf("\n");
}//main
㈣ 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語言產生不重復的0到9之間的隨機數
上面的會重復 ,用我這個
#include <stdlib.h> //標准工具庫,要用到其中的rand()
#include <stdio.h>
#include<conio.h>
#include <time.h> //時間庫,要用到裡面的版時間來做隨機權數的種子
int main(void)
{
int i;
int r;
int sz[10]={0,1,2,3,4,5,6,7,8,9};
srand(time(NULL));
printf("Ten random numbers from 0 to 9\n\n");
for(i=0; i<10; i++)
{
r=rand()%(10-i);
printf("%d\n",sz[r]);
for(int j=r;j<10;j++)
sz[j]=sz[j+1];
}
getch();
return 0;
}
㈥ C語言程序產生不重復隨機數
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int main()
{
int i,j;
int n[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語言產生不重復的隨機數
#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語言生成1 - 100的不重復隨機數
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
intRand(intX,intY)//生成隨機數
{
inttemp;
if(X>Y)
{
temp=X;
X=Y;
Y=temp;
}
returnrand()%(Y-X+1)+X;
}
voidmain()
{
intarr[100];
inti;
intr;
inttemp;
srand((unsigned)time(NULL));
for(i=0;i<100;i++)arr[i]=i+1;//將數組賦值1~100
for(i=0;i<100;i++)
{
r=Rand(0,99);
temp=arr[i];
arr[i]=arr[r];
arr[r]=temp;
}//數組亂序
for(i=1;i<=100;i++)
{
printf("%3d",arr[i-1]);
if(i%10==0)
printf(" ");
}
}
㈨ 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;
}