1樓:珈藍惜夢
源程式**以及演算法解釋如下:
產生1-10隨機數程式:
#include
#include
using namespace std;
int main()
;//定義隨機數儲存的陣列
srand((unsigned)time(null));//初始化隨機函式
number[0] = rand() % n;//第乙個隨機數無需比較
cout << number[0] << " ";
for (int i = 1; i < n; i++)//其餘隨機數迴圈產生
if (j == (i - 1))//若遍歷完就跳出
break;
j++;
}cout << number[i] << " ";
}cout << endl;
return 0;
}程式執行結果如下:
擴充套件資料:
利用vector進行隨機數輸出:
#include
#include
#include
using namespace std;
int main()
cout << endl;
srand((unsigned)time(null));
for (int j = 0; j < n; j++) //其餘隨機數迴圈產生
cout << endl;
return 0;}
2樓:風若遠去何人留
c語言中有自己的隨機數函式rand()
其原型為
int rand();
功能為獲取乙個隨機整型數。
所在標頭檔案為stdlib.h
抽取10個隨機數並輸出的程式可以寫成
#include
#include
int main()
在應用中,需要的隨機數往往是乙個範圍,比如要隨機生成一組合法的整型分數的時候,實際上是需要生成一組[0,100]的隨機整數。要達到這樣的目的,可以通過取餘運算(模除運算)來實現。
對於a%b的值,其結果範圍在[0,b-1]之間。依照這個原理,如果要得到範圍在[a,b]的隨機整數,可以先求得[0,b-a]範圍的隨機數,再在結果上加a即可。
也就是rand()%(b-a+1) + a
於是在之前**的基礎上,抽取10個值在[0,100]範圍內的隨機數程式可以寫成
#include
#include
int main()
值得注意的一點是,c語言提供的rand函式是偽隨機數,如果不做其它處理,那麼每次執行程式獲取到的隨機數序列是固定的。為了解決這個問題,c語言還定義了srand這個庫函式,用來設定乙個隨機數種子,從而得到乙個不確定的隨機初始值。
srand要求有乙個int型的引數,這個引數比較常見的做法是用time(null)來獲取當前微秒數來充當。
於是乙個完整的設定隨機數種子的操作為
srand(time(null));
其中time函式需要引入time.h來宣告。
srand函式需要在第一次呼叫rand前呼叫,這樣獲取[0,100]間10個隨機整數並輸出的程式就最終被修改為
#include
#include
#include //增加time函式的標頭檔案
int main()
3樓:晁憶楣
用標準c就可以實現
需要用到的兩個函式在包含在stdlib.h標頭檔案裡,分別是void rand ( unsigned int seed ); //設定隨機化種子
int rand ( void ); //產生0到rand_max之間的隨機數,rand_max是stdlib.h裡定義的數字。
其實這兩個函式實現產生的是假隨機數,所以真正實現隨機還要借助time.h裡面的函式time()。
具體可以參考下面的方法:
//產生0-9隻間的隨機數
#include
#include
#include
int random()
4樓:匿名使用者
int number[max]=;
int i;
srand((unsigned)time(null));/*播種子*/
for(i=0;i printf("\n"); 5樓:繁華落盡擱淺 #include #include #include int main() 6樓:匿名使用者 srand(time(0));//time()函式在time.h標頭檔案中 rand()%12+5; c語言怎樣產生一定範圍的隨機數? 7樓:hk_孤獨的心 編譯環境為:vs2013 產生1到3的整型隨機數的**如下: #include #include #include #define max 3 //這個函式的意義為:隨機生成最大的數為3 #define min 1 //這個函式的意義為:隨機生成最小的數為1 int main() 8樓:愛夏的你呀 在c語言中,rand()函式可以用來產生隨機數,但是這不是真真意義上的隨機數, 是乙個偽隨機數,是根據乙個數,可以稱它為種子。 為基準以某個遞推公式推算出來的一係數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。 c語言產生一定範圍的隨機數的源**如下: #include #include int main() return 0; }擴充套件資料 1、如果要隨機生成乙個在一定範圍的數,你可以在巨集定義中定義乙個random(int number)函式,然後在main()裡面直接呼叫random()函式。 2、在對rand()的前三次呼叫中,並且此後得到的返回值仍然是在對rand()的第一批呼叫中所得到的其餘的返回值。因此,只有再次給srand()提供乙個隨機的「種子」值,才能再次得到乙個隨機數。 9樓:匿名使用者 c語言的獲取隨 機數的函式為rand(), 可以獲得乙個非負整數的隨機數。要呼叫rand需要引用標頭檔案stdlib.h。 要讓隨機數限定在乙個範圍,可以採用模除加加法的方式。 要產生隨機數r, 其範圍為 m<=r<=n,可以使用如下公式: rand()%(n-m+1)+m 其原理為,對於任意數, 0<=rand()%(n-m+1)<=n-m於是0+m<=rand()%(n-m+1)+m<=n-m+m即m<=rand()%(n-m+1)+m<=n 10樓:哇哎西西 利用srand((unsigned int)(time(null))是一種方法,因為每一次執行程式的時間是不同的。 在c語言裡所提供的隨機數發生器的用法:現在的c編譯器都提供了乙個基於ansi標準的偽隨機數發生器函式,用來生成隨機數。它們就是rand()和srand()函式。 這二個函式的工作過程如下: 1) 首先給srand()提供乙個種子,它是乙個unsigned int型別,其取值範圍從0~65535; 2) 然後呼叫rand(),它會根據提供給srand()的種子值返回乙個隨機數(在0到32767之間) 3) 根據需要多次呼叫rand(),從而不間斷地得到新的隨機數; 4) 無論什麼時候,都可以給srand()提供乙個新的種子,從而進一步「隨機化」rand()的輸出結果。 下面是0~32767之間的隨機數程式: #include #include #include // 使用當前時鐘做種子 void main(void) 根據上面的程式可以很容易得到0~1之間的隨機數: #include #include #include int main( ) 而產生1~100之間的隨機數可以這樣寫: #include #include #include int main( ) 11樓:溫柔_儂渲芷 srand((int)time(null));設定隨機數種子 rand()%100;產生0-99的隨機數。高階點的,假如要產生16-59之間的數,你可以這樣寫:rand()%44+16(這裡44由59-16+1得到)。其他情況如法炮製! 下面是搜回來的: 問題1: 怎樣獲得乙個真正的隨機數?要知道,rand()是不能產生真正的隨機數的!即使不能產生真正的隨機數,也要大概接近呀!而rand()好象每次的隨機都一樣。 專家解答: 之所以rand()每次的隨機數都一樣是因為rand()函式使用不正確。各種程式語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分布。如果計算偽隨機序列的初始數值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。 這個特性被有的軟體利用於加密和解密。加密時,可以用某個種子數生成乙個偽隨機序列並對資料進行處理;解密時,再利用種子數生成乙個偽隨機序列並對加密資料進行還原。這樣,對於不知道種子數的人要想解密就需要多費些事了。 當然,這種完全相同的序列對於你來說是非常糟糕的。要解決這個問題,需要在每次產生隨機序列前,先指定不同的種子,這樣計算出來的隨機序列就不會完全相同了。你可以在呼叫rand()函式之前呼叫srand( (unsigned)time( null ) ),這樣以time函式值(即當前時間)作為種子數,因為兩次呼叫rand函式的時間通常是不同的,這樣就可以保證隨機性了。 你也可以使用srand函式來人為指定種子數。windows 9x/nt的遊戲freecell就允許使用者指定種子數,這樣使用者如果一次遊戲沒有成功,下次還可以以同樣的發牌結果再玩一次。 問題2: 我按照上述方法並不能產生隨機數,僅產生公差為3或4的等差數列: 請採納答案,支援我一下。 12樓:a羅網天下 srand((int)time(null));設定隨機數種子 例子如下: 直接編譯,程式執行結果如下圖所示: 13樓:匿名使用者 #include #include #include int main(void) 14樓:匿名使用者 要生成[a,b]範圍內隨機數:rand()%(b-a+1)+a30~120之間:rand()%(120-30+1)+30即rand()%91+30 rand()%91會生成0~90之間隨機整數rand()%91+30會生成30~120之間整數 巧金蘭嵇嫣 樓上這樣得出的隨機值不準確,不信你執行幾次試試,都是同一個數。正確應該這樣。首先加標頭檔案 include include 然後在主函式裡面寫 inti srand time 0 i rand 100 1 printf d i 隨機數主要有兩個函式 一個種子產生函式 void srand... 我幫你看了下,是這樣的,當隨機生成的n與之前隨機儲存在result陣列中的數相同的時候,flag被清除,將不執行if flag 裡面的語句,這時候,如果count還沒到達4,那麼就一直停留在 當前的數 比如等於2 那麼while迴圈就變成死迴圈。修改後的源 如下 vc 6.0下編譯通過 includ... 滄海雄風 include include include using namespace std int main srand unsigned time null 初始化時間種子 int ret rand 3 產生 0 1 2 三種隨機數 int real pow 2,ret 2的0次方 1 2的...C語言中產生隨機數,C語言怎樣產生一定範圍的隨機數?
c語言 產生隨機數有時候會死迴圈
怎麼用c 生成指定隨機數,在c 裡怎麼弄隨機數?