當前位置:首頁 » 編程語言 » c語言6位隨機數

c語言6位隨機數

發布時間: 2022-04-27 22:25:31

『壹』 c語言怎樣產生一定范圍的隨機數

在C語言中,rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,可以稱它為種子。

為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。

C語言產生一定范圍的隨機數的源代碼如下:

#include<stdio.h>

#include<stdlib.h>

int main()

{

int i;

for(i=0; i<10; i++) //隨機產生10個數。

{

printf("%d ", rand());

}

return 0;

}

(1)c語言6位隨機數擴展閱讀

1、如果要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數。

2、在對rand()的前三次調用中,並且此後得到的返回值仍然是在對rand()的第一批調用中所得到的其餘的返回值。因此,只有再次給srand()提供一個隨機的「種子」值,才能再次得到一個隨機數。

『貳』 c語言隨機數

你好,我也遇到過這個問題,因為srand()是根據時間獲取隨機數,所以有規律可循。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#definerandom(x)(rand()%x)
#definemax10

intmain()
{
inti;
srand((int)time(0));
for(i=0;i<max;i++)
printf("%d ",random(100));
return0;
}

這樣只有第一個數會發生之前的情況。

『叄』 關於C語言隨機函數

把 srand( time(0) ); 放在循環外每次產生隨機數的種子也是一樣的啊,為什麼產生的隨機數就不一樣了?
因為隨機函數只需要一個種子就能產生一系列的隨機數,並不是每個隨機數都需要一個種子。

你把 srand(time(0)) 放到循環前面就可以了。
原因: time(0)返回的是系統的時間(從1970.1.1午夜算起),單位:秒,而那個循環運行起來耗時連0.000001秒都不到! 也就是說,srand(time(0)) 連著4次的種子是一樣的,種子一樣,生產的隨機數當然是一樣了。

如果你在把srand()放循環裡面,在中間加個sleep函數,消耗一點時間(間隔大於1秒),那麼生成的rand 就不一樣了.但是這樣做很不好,連著兩次用srand生成的種子,間隔一樣,生產的隨機數間隔有會有規律性。

另:因為兩次運行同一程序的時間肯定是不一樣的,所以把srand放在循環前面可以得不同的種子,這樣才能得到你想要的。

『肆』 如何用c語言產生一定范圍內的隨機數

srand((int)time(NULL));設定隨機數種子
例子如下:
直接編譯,程序執行結果如下圖所示:
(4)c語言6位隨機數擴展閱讀:
隨機數是專門的隨機試驗的結果。在統計學的不同技術中需要使用隨機數,比如在從統計總體中抽取有代表性的樣本的時候,或者在將實驗動物分配到不同的試驗組的過程中,或者在進行蒙特卡羅模擬法計算的時候等等。
產生隨機數有多種不同的方法。這些方法被稱為隨機數發生器。隨機數最重要的特性是:它所產生的後面的那個數與前面的那個數毫無關系。

『伍』 c語言中如何產生1000000個6位無重復隨機數

只用1000個數測試.

#include <iostream>
#include <ctime>
using namespace std;
void Fun( int a[], int n )
{
int k = 1, j = 0 ;
bool bFlag = 1;
a[0] = rand() + 100000;
for( int i = 0; i < n - 1; )
{
int num = rand() + 100000;
bFlag = 1;
for( j = 0; j < k; j ++)
{
if( a[j] == num || num > 999999)
{
bFlag = 0;
break;
}
}
if( bFlag )
{
a[k] = num;
k++;
i++;
}
}
}
int main()
{
int a[1000];
srand( time( 0 ) );
Fun( a, 1000);
for( int i = 0; i < 1000; i++)
{
cout<< a[i] <<endl;
}
return 0;
}

『陸』 c語言 隨機數

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<dos.h>

void createRandom(int n)
{
int i,num;
FILE *fp;
if((fp=fopen("num.txt","w")) == NULL)
{
printf("Cannot open file.\n");
exit(0);
}
srand((unsigned)time(NULL));
for(i=0;i<n;i++)
{
num=rand()%500+1; //產生隨機數的范圍1~500
fprintf(fp,"%-4d",num);
}
printf("產生的隨機數成功保存到文件當中.\n");
fclose(fp);
}

void selectSort(int n)
{
int i,j,k,a[100];
int *pt,temp;
FILE *fp;
pt=a;
if((fp=fopen("num.txt","r+")) == NULL)
{
printf("Cannot open file.\n");
exit(0);
}
//讀取文件
while(fscanf(fp,"%d",&temp) != EOF)
{
*pt=temp;
pt++;
}
//選擇排序
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[k]>a[j])
k=j;
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
//在屏幕列印排序後的隨機數
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
if(0 ==(i+1)%10)
printf("\n");
}
fclose(fp);
}

void display(int n)
{
int temp,i;
FILE *fp;
if((fp=fopen("num.txt","r")) == NULL)
{
printf("Cannot open file.\n");
exit(0);
}
for(i=0;fscanf(fp,"%d",&temp) != EOF;i++)
{
printf("%d\t",temp);
if(0 ==(i+1)%10)
printf("\n");
}
printf("\n");
fclose(fp);
}

int main()
{
int n=100;
system("cls");
printf("生成隨機數並保存到文件中:\n");
createRandom(n);
printf("在屏幕列印產生的隨機數:\n");
display(n);
printf("在屏幕列印排序後的隨機數:\n");
selectSort(n);
return 0;
}
這是該問題的源碼,運行結果完全滿足題目的要求,你也可以在此基礎上修改一下源碼,讓它更完善些。

『柒』 C語言隨機數

random()產生五位數的很好做,可以這樣
while(1)
{/*n保存的就是你要取的隨機數*/
if(i=random(100000)>9999)
{ n=i; break;}
}
因為我現在用的是VC++我只只能用rand(),所以現在不能檢驗,但應該沒問題。
轉換成字元也好做,我們定義一個函數inttochar(int n,char *s)其中n是要轉換的數,s可以是指針也可以是數組,因為你要轉換的是五位數,所以為了方便就直接定義一個長度位6(不是5,因為還要保存\0)的字元數組:
inttochar(int n,char *s)
{
for(i=4;i>=0;i--)
{
s[i] = n%10 + 48; /*取個位的ASCII碼,0的ASCII碼是48*/
n/=10; /*去掉一位*/
}
s[5] = '\0';
}
下面是vc++通過的一個檢驗程序:
#include<stdlib.h>
#include<stdio.h>
void inttochar(int n,char *s)
{
int i;
for(i=4;i>=0;i--)
{
s[i] = n%10 + 48; /*取個位的ASCII碼,0的ASCII碼是48*/
n/=10; /*去掉一位*/
}
s[5] = '\0';
}
void main()
{
int i,n;
char s[6];
while(1)
{
while(1)
{
i=rand();
if(i>9999&&i<100000)
{/*如果隨機數在9999~100000之間則取之*/
n = i;break;/*不要忘了break*/
}
}
printf("隨機數為 n=%d\n",n);
inttochar(n,s);
printf("字元串為 s=%s",s);
if(getchar()=='#') break;/*按#號推出程序*/
}
}
祝您學習愉快!

『捌』 如何用C語言產生一個六位數的隨機數

C語言下沒有真正的隨機函數,如果用srand與rand配合產生隨機數,每個數之間的間隔需要在1秒鍾以上.
下面是我寫的一個用來隨機產生7-9位QQ郵箱的源代碼,原理是先用隨機函數產生一個<10的整數(這個數是所生成QQ號碼的位數),然後判斷這個數是否在7~9之間,如果滿足要求,下面將一位一位地產生每一位數字,最後與"@qq.com"連接,生成一個QQ郵箱,並寫入文件.
VC++6.0下編譯通過
函數proceQQMail()用來產生隨機數的代碼:

#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX_ADDRESS 1000

char directory[20];
DWORD writeFile(const char*filename,char*str)
{
FILE *fp;
fp=fopen(filename,"a+");
if(fp==NULL)
{
puts("Cannot open this file!");
return -1;
}
fprintf(fp,"%s\n",str);
fflush(fp);
//fputs(str,fp);
return 1;
}

DWORD proceQQMail() //→→→→→產生QQ郵箱函數
{
unsigned int i,count;
char zj[20];
char compare[20];
unsigned long relative;
for(count=1;count<=MAX_ADDRESS;count++)
{
Sleep(600);
srand((unsigned)time(0));
while(1)
{
relative=1+(int)(10.0*rand()/(RAND_MAX+1.0));//產生QQ號碼的位數
if(relative<7||relative>9)
continue;//判斷是否滿足所需要的位數
Sleep(100);
for(i=0;i<relative;i++)
{
itoa(1+(int)(10.0*rand()/(RAND_MAX+1.0)),&zj[i],10);//生成每一位數字,將其轉換為字元型,並保存在數組中
}
zj[i]='\0';
strcat(zj,"@qq.com");//連接生成郵箱
if(count>1&&strcmp(compare,zj)==0) //比較前後兩者以防出現相同的郵箱
continue;
strcpy(compare,zj);
if(writeFile(directory,zj)==1)
{
printf("===>生成第%d個QQ郵箱\n",count);
//system("cls");
break;
}
}
}
return 1;
}

void main()
{
puts("=>請輸入您要保存到的文件名及其目錄");
scanf("%s",directory);
puts("=>Now procing QQ mail addresses……");
proceQQMail();
}

熱點內容
滑鼠如何編程 發布:2025-05-16 02:29:09 瀏覽:815
安卓70能用什麼軟體 發布:2025-05-16 01:45:09 瀏覽:480
編程發展史 發布:2025-05-16 01:38:52 瀏覽:528
android圖片氣泡 發布:2025-05-16 01:38:40 瀏覽:886
文件加密編輯器下載 發布:2025-05-16 01:30:41 瀏覽:343
linuxapacheyum安裝 發布:2025-05-16 01:30:31 瀏覽:476
大連賓利浴池wifi密碼是多少 發布:2025-05-16 01:25:36 瀏覽:172
緩存數據生產服務 發布:2025-05-16 01:08:58 瀏覽:585
普通電腦伺服器圖片 發布:2025-05-16 01:04:02 瀏覽:971
伺服器地址和埠如何區分 發布:2025-05-16 01:03:17 瀏覽:834