『壹』 c語言如何srand和rand函數產生10個1-100內的隨機數知道
先用srand函數設置一個種子,一般為當前時間,然後使用rand函數產生隨機數,如產生a~b的隨機數使用表達式rand()%(b-a+1)+a。
注意:srand函數在頭文件#include
<stdlib.h>中。
示例代碼:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a[10]/*用於保存10個產生的隨機數*/, i;
srand((unsigned int)time(NULL));//設置當前時間為種子
for (i = 0; i < 10; ++i){
a[i] = rand()%100+1;//產生1~100的隨機數
}
//列印生成的隨機數
for (i = 0; i < 10; ++i){
printf ("%d ", a[i]);
}
printf ("\n");
return 0;
}
『貳』 C語言rand()函數產生的最大隨機數是多少
最大隨機數因平台不同而不同
在C頭文件中定義有RAND_MAX這個宏
在stdlib.h裡面
你可以查看這個文件 或者列印
#include<stdio.h>
#include<stdlib.h>
intmain()
{
printf("RAND_MAX=%d ",RAND_MAX);
return0;
}
我用的是gcc 4.8.4 得到的結果是2147483647
『叄』 C語言中srand函數與rand函數產生隨機數的問題
這里改一下:printf ("%d\n", rand()%32767+1);。因為1個整數除以32767的余數肯定是在0~32766之間,加上1便可以保證結果在1~32767之間。
『肆』 關於用C語言庫函數rand()生成隨機數的問題
rand()生成[0,RAND_MAX]之間的隨機數,
生成[a, b]范圍內的浮點隨機數,a + rand() * 1.0 * (b - a) / RAN_MAX
整數隨機數: a + rand() / (RAN_MAX / (b - a) + 1)
rand()/RAND_MAX - 2 是錯的,浮點數只會得到[-2, -1],整數只會得到-2和-1兩個數。
『伍』 C語言rand函數產生的最大隨機數是多少
最大32767 (2^16-1)。
系統里的隨機數是利用初等數論中的同餘定理來實現的.
整數rand的原理是:
y=ax+b(mod n)其中,n一般是一個很大的素數,幾萬。
a也是大素數。而且a,b,n都是常數。所以rand的產生決定於x,
他被稱為seed。
每一個seed都是上一次產生的y的函數。這樣,如果直接取seed=y的話,
雖然產生的rand之間相關性甚小,但只要知道某個y,就能推知以後的rand。
為避免這種情況,一般取seed為y和當時計算機的時間的函數,如seed=y+t
比如VC中對於rand()函數是如下實現的.
int __cdecl rand (void)
{
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
}
『陸』 C語言中產生隨機數的函數是什麼
rand函數也是調用dos的時鍾,進行的偽隨機函數.
你也可以使用時鍾來模擬隨機函數.
可以試用gettime這個函數:
long int MyRand(int x)
{
struct time t1,t2,t3;
gettime(&t1);
int y1=t1.ti_hund;//取1/100s作為基數
gettime(&t2);
int y2=t2.ti_hund;//取1/100s作為基數
gettime(&t3);
int y3=t3.ti_hund;//取1/100s作為基數
return y1*y2*y3;//產生的隨機數0~99*99*99
}
『柒』 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;
}
『捌』 關於C語言中rand函數的一個簡單問題—rand函數產生隨機數的范圍是
rand()產生偽隨機數,srand函數提供種子,種子不同產生的隨機數序列也不同,所以通常先調用srand函數 time(0)返回的是系統的時間(從1970.1.1午夜算起),單位:秒,返回0至RAND_MAX之間的隨機數值,RAND_MAX定義在stdlib.h,其值為2147483647。
『玖』 C語言如何srand和rand函數產生10個1-100內的隨機數
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
『拾』 c語言rand怎麼隨機產生浮點型數
#include<stdlib.h>
#include<time.h>
#include<iostream.h>
#define MAX_RANDOM 1000//這個是產生隨機數的最大值,但是取浮點數,所以要除去的
#define NUM 2500
double random(double a,double b)//這個是產生隨機數函數,由於庫函數功能有限,所以要自己封裝一下
{
return(rand()%(int)((b-a)*MAX_RANDOM))/(double)MAX_RANDOM+a;
}
void main()
{
double Dran[NUM+(NUM-1)*4];
double ran[(NUM-1)*4];
double a,b;
int k=0;
srand((unsigned)time(NULL));//這個是設定隨機數的種子數,由於種子數相同產生的隨機數相同,所以取時間做種子
cout<<"***********************************親體**************************"<<endl;
for(int i=0;i<NUM+(NUM-1)*4;i=i+5)//獲得了親體
{
Dran<i>=random(10,20);
cout<<Dran<i><<"";
}
/*
cout<<"***********************************後代**************************"<<endl;
//Dran裡面是裝的親代和後代一起的,ran裡面只是裝的後代
for(i=0;i<NUM+(NUM-1)*4-1;i=i+5)
{
a=Dran<i>;
b=Dran[i+5];
for(int j=1;j<=4;j++)
{
Dran[i+j]=random(a,b);
ran[k]=Dran[i+j];
cout<<ran[k]<<"";
k++;
}
}
*/
}
(rand()%(int)((b-a)*MAX_RANDOM))/(double)MAX_RANDOM+a這個產生浮點數.
(10)c語言rand函數每秒生成隨機數擴展閱讀:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內容
#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:
#include<math.h>//一些數學函數的原型,以及相關的類型和宏
如果需要包含針對程序所開發的源文件,則應該使用第二種格式。
採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。