rand函數也是調用dos的時鐘,進行的偽隨機函數.
創新互聯公司于2013年創立,先為云安等服務建站,云安等地企業,進行企業商務咨詢服務。為云安企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
你也可以使用時鐘來模擬隨機函數.
可以試用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
}
源程序代碼以及算法解釋如下:
產生1-10隨機數程序:
#include iostream
#include time.h
using namespace std;
int main()
{
const int n = 10;//定義隨機數個數
int number[n] = { NULL };//定義隨機數存儲的數組
srand((unsigned)time(NULL));//初始化隨機函數
number[0] = rand() % n;//第一個隨機數無需比較
cout number[0] " ";
for (int i = 1; i n; i++)//其余隨機數循環產生
{
int j = 0;
number[i] = rand() % n;//產生隨機數
while (1)
{
if (number[i] == number[j])//若有相同則繼續循環重新安排隨機數
{
number[i] = rand() % n;//產生隨機數
j = 0;//若遇到相同的就從頭遍歷
continue;
}
if (j == (i - 1))//若遍歷完就跳出
break;
j++;
}
cout number[i] " ";
}
cout endl;
return 0;
}
程序運行結果如下:
擴展資料:
利用vector進行隨機數輸出:
#include iostream
#include vector
#include time.h
using namespace std;
int main()
{
const int n = 10;
int randnum;
vectorint number;
for (int i = 0; i n; i++)
{
number.push_back(i + 1);????//從尾部添加元素
cout number[i] " ";
}
cout endl;
srand((unsigned)time(NULL));
for (int j = 0; j n; j++)?????//其余隨機數循環產生
{
randnum = rand() % (n - j);????//rand函數生成的隨機數是0-(n-1)
cout number.at(randnum) " ";
number.erase(number.begin() + randnum);
}
cout endl;
return 0;
}
一、首先包含必要的頭文件
#includestdio.h
這個包含用于輸入輸出的函數。
#includestdlib.h
這個包含初始化隨機數種子、產生隨機數的函數。
#includetime.h
這個包含與時間有關的函數,初始化隨機數種子時可以用到。
二、使用如下公式產生在區間[min,max]之間的隨機數
int r=rand()%(max-min+1)+min;
三、一個例子,產生10個[1,100]的隨機整數
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
const int min=1,max=100;
int i,r;
//用當前時間初始化隨機數種子
srand(time(NULL));
printf("隨機產生的10個1-100的整數是:");
for(i=0;i10;i++)
{
r=rand()%(max-min+1)+min;
printf("%d,",r);
}
return 0;
}
四、運行結果的截圖
截圖1
截圖2
網站標題:c語言中隨機函數的寫法 c語言中,產生隨機數的函數及其應用代碼舉例
當前URL:http://vcdvsql.cn/article48/ddoipep.html
成都網站建設公司_創新互聯,為您提供軟件開發、品牌網站制作、品牌網站設計、品牌網站建設、移動網站建設、面包屑導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯