1樓:粘文惠藩歆
函式intrand(void):
從。srand
seed)中指定的。
seed開始,返回一個[seed,rand_max(0x7fff))間的隨機整數。
此處time(0)時獲取當前時間距epoch時間的秒數,在迴圈內,你使用time(0)獲取到的是相同的值,所有每次設定srand(
time(0)
後再使用rand就會獲取到相同的值。如果在srand(time(0)
後休眠1s則每次獲得的值將會不同。
srand(
time(0)
放在迴圈外,每次呼叫rand()產生一個隨機數,列印的數字是隨機的。
2樓:匿名使用者
函式int rand(void): 從 srand (seed)中指定的 seed 開始,返回一個[seed, rand_max(0x7fff))間的隨機整數。
此處time(0)時獲取當前時間距epoch時間的秒數,在迴圈內,你使用time(0)獲取到的是相同的值,所有每次設定srand( time(0) )後再使用rand就會獲取到相同的值。如果在srand( time(0) )後休眠1s則每次獲得的值將會不同。
srand( time(0) )放在迴圈外,每次呼叫rand()產生一個隨機數,列印的數字是隨機的。
關於c++隨機函式
3樓:匿名使用者
系統提供了一個函式用來產生隨機數 就是 rand() 函式。
它會根據系統內的一個隨機種子來產生隨機數。
直接呼叫 rand函式系統就會返回一個隨機數需要包含標頭檔案
4樓:匿名使用者
以#include為標準庫的 rand()隨機函式!
c語言如何程式設計產生隨機數?
5樓:飛喵某
1、首先開啟visual stdio 2019,依次點選檔案,新建,專案新建以一個空白的專案:
2、新建新專案以後,右鍵點選左邊的原始檔,選擇新增,點選新增項:
3、選擇cpp,並將下方的副檔名改為。c,然後點選確定:
4、接下來就可以用編譯器編譯,使用rand()函式產生c語言的隨機數,需要加入和在表頭,rand()函式需要給srand()函式提供一個引數,不然系統會給定一個預設的引數,如果引數為一任意的常量的話,得到的也是偽隨機數:
4、按ctrl+f5就可以執行程式了,在彈出的視窗中就會看到得到的所有隨機數了:
6樓:彭擾龍煒
有三種方式,分別適用於不同的需求。
如果需要的隨機數範圍在0到2147483647之間,直接呼叫rand()函式就行了。
例如:如果需要的隨機數在一定範圍,可以在巨集定義中定義一個random(int number)函式,然後在main()裡面直接呼叫:
例如:隨機生成10個0~100的數:
以上兩種方式產生的隨機數都是一次性的,如果你第二次執行的時候輸出結果仍和第一次一樣。連續產生不同的隨機數如下如下例如:
7樓:匿名使用者
假設要生成的隨機數是大於等於20且小於等於100的整數#include
#include
#include
void main()
c語言怎樣產生一定範圍的隨機數?
8樓:hk_孤獨的心
編譯環境為:vs2013
產生1到3的整型隨機數的**如下:
#include
#include
#include
#define max 3 //這個函式的意義為:隨機生成最大的數為3
#define min 1 //這個函式的意義為:隨機生成最小的數為1
int main()
9樓:愛夏的你呀
在c語言中,rand()函式可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,可以稱它為種子。
為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公佈,從而相當於產生了隨機數。
c語言產生一定範圍的隨機數的源**如下:
#include
#include
int main()
return 0;
10樓:匿名使用者
c語言的獲取隨。
機數的函式為rand(),可以獲得一個非負整數的隨機數。要呼叫rand需要引用標頭檔案。
要讓隨機數限定在一個範圍,可以採用模除加加法的方式。
要產生隨機數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
11樓:哇哎西西
利用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( )
12樓:溫柔_儂渲芷
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的等差數列:
#include
#include
#include
#include
void main()
for(int i=0;i<100000;i++)
srand( (unsigned)time( null )
13樓:a羅網天下
srand((int)time(null));設定隨機數種子
例子如下:
直接編譯,程式執行結果如下圖所示:
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之間整數。
15樓:慢冰片
也要大概接近呀,因為兩次呼叫rand函式的時間通常是不同的,則計算出來的偽隨機序列就是完全相同的。各種程式語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值;
for(int i=0;100000;i++)參考資料。h>time,而由於計算機執行很快;i問題1;設定隨機數種子。
rand()%100,需要在每次產生隨機序列前。
16樓:匿名使用者
前幾位把常規方法都說了,我補充一種更前衛的方法。用boost的random庫,專業隨機數生成器。
17樓:匿名使用者
1.此方法並不保證 每個數字是等可能的。
在程式中初始化隨機種子 一個程式只需一次srand((unsigned int)time(null));
再用rand()返回的值%範圍的大小。
rand()%b-a);
比如要求100~10000之間的隨機數rand()%10000-100)+100;
2.//注意1的方法不能求範圍超過65535的隨機數//在程式中初始化隨機種子。
srand((unsigned int)time(null));
rand()/
比如要求10~100000000之間的隨機數rand()/
18樓:
c語言/c++怎樣產生。
隨機數:這裡要用到的是rand()函式, srand()函式,c語言/c++裡沒有自帶的random(int number)函式。
1) 如果你只要產生隨機數而不需要設定範圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 範圍在0至rand_max 間。rand_max定義在stdlib.
h, 其值為2147483647。
例如:#include
#include
void main()
2) 如果你要隨機生成一個在一定範圍的數,你可以在巨集定義中定義一個random(int number)函式,然後在main()裡面直接呼叫random()函式:
例如:隨機生成10個0~100的數:
#include
#include
#define random(x) (rand()%x)
void main()
3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次執行的時候輸出結果仍和第一次一樣。這與srand()函式有關。srand()用來設定rand()產生隨機數時的隨機數種子。
在呼叫rand()函式產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在呼叫時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設定隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。
srand()函式定義 : void srand (unsigned int seed);
通常可以利用geypid()或time(0)的返回值來當做seed
如果你用time(0)的話,要加入標頭檔案#include
例如:#include
#include
#include
#define random(x) (rand()%x)
void main()
這樣兩次執行的結果就會不一樣了!!
c語言中取隨機數的函式,C語言中取隨機數的函式
韌勁 1.基本函式 在c語言中取隨機數所需要的函式是 int rand void void srand unsigned int n rand 函式和srand 函式被宣告在標頭檔案stdlib.h中,所以要使用這兩個函式必須包含該標頭檔案 include 2.使用方法 rand 函式返回0到ran...
C關於隨機數抽取問題,C 怎麼獲取隨機數
public string randomnum int n int t rand.next 61 if temp 1 temp t temp t vnum vcarray t return vnum 返回生成的隨機數 c 怎麼取隨機數? 使用random類中的next 方法。例如,生成一個100以內...
c語言使用隨機函式rand產生1099的互不相
你好!你的 就沒有輸出部分呀 輸出部分新增了,你看看吧 include stdlib.h include stdio.h include time.h void main int n a 50 i,j,t srand time null for i 0 i 50 i a i rand 90 10 f...