VC 如何得到不同的隨機數,srand我試過了,每次產生的

2022-05-03 08:39:33 字數 3285 閱讀 2507

1樓:匿名使用者

#include

srand((unsigned int)time(null)); //用當前時間做種子,解決種子固定問題

int a=rand();

c++中如何用srand()語句產生每次都不一樣的隨機數(要簡單的例子說明一下!!!)

2樓:匿名使用者

用時間做種子初始化

#include

#include

int main()

return 0;}

3樓:荒生失走

同樓上 因為隨機數的實質是從一個固定的隨機數表裡生成的一般把隨機數引數稱之為種子

也就樓上說的用時間做種子初始化的方法

因為每次執行程式的時間肯定不一樣,所以產生的隨機數也就不相同了

vc如何產生有效的隨機數,srand(time)函式總是產生偽隨機數。

4樓:匿名使用者

之前我也在學這個隨機數,這是我搜到的一些,不知對你有沒有幫助

工作原理如下

1) 首先給srand()提供一個種子,它是一個unsigned int型別,其取值範圍從0~65535;

2) 然後呼叫rand(),它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間)

3) 根據需要多次呼叫rand(),從而不間斷地得到新的隨機數;

4) 無論什麼時候,都可以給srand()提供一個新的種子,從而進一步「隨機化」rand()的輸出結果。

因為srand()函式是一個隨機數產生函式,其意思就是指c語言裡的隨機數都是由它來控制產生的!!!如果在應用srand()函式之前就用隨機函式rand(),則相當於使用了srand(1);

而將srand( (unsigned)time( null ) );這條語句放在了for迴圈裡,即是用了srand( (unsigned)time(0 ));故此句語句不變的話,產生的隨機數就不變!!

c語言隨機函式總結) rand()函式:

原型: int rand(void)

功能: 產生從0到rand_max(0x7fff)之間的隨機數。

標頭檔案: stdlib.h

例:#include

#include

int main()

(2)srand()函式:

原型: void srand(unsigned seed)

功能: 產生隨機數的起始發生資料,和rand函式配合使用

標頭檔案: stdlib.h time.h

例:#include

#include

#include

int main(void)

這時執行程式,會發現每次產生的隨機數都不一樣。這是因為這裡採用了時間作為種子,而時間在每時每刻都不相同,所以就產生了"隨機"的隨機數了。所以,要想產生不同的隨機數,在使用rand之前需要先呼叫srand。

5樓:匿名使用者

想產生有效隨機數 很考數學 啊

本人建議你研究下 :

指數偏離、高斯偏離、伽馬分佈、泊松偏離、二項偏離、蒙特卡羅積分、拉丁超立方、遞迴分層取樣、混合策略

夠學一本書的了

數學啊數學

vc中產生隨機數的srand函式怎麼用?怎麼還有個rand?

6樓:匿名使用者

srand()設定種子

rand()才得到隨機數

也就是先執行void srand(unsigned int seed)

再執行int rand()

如果種子不變,那麼多次執行rand()得到的隨機序列也是相同的所以經常以時間作為種子

7樓:匿名使用者

#include

#include

#include

#define n 10

main()

vc ++6.0的rand()函式產生的是什麼型別的隨機數?

8樓:匿名使用者

rand()不需要引數,它會返回一個從0到最大隨機數的任意整數,最大隨機數的大小通常是固定的一個大整數。 這樣,如果你要產生0~10的10個整數,可以表達為:

int n = rand() % 11;

這樣,n的值就是一個0~10的隨機數,如果要產生1~10,則是這樣:

int n = 1 + rand() % 11;

總結來說,可以表示為:

a + rand() % n

其中的a是起始值,n是整數的範圍。   a + rand() % (b-a+1) 就表示 a~b之間的一個隨機數若要0~1的小數,則可以先取得0~10的整數,然後均除以10即可得到隨機到十分位的10個隨機小數,若要得到隨機到百分位的隨機小數,則需要先得到0~100的10個整數,然後均除以100,其它情況依

此類推。

通常rand()產生的隨機數在每次執行的時候都是與上一次相同的,這是有意這樣設計的,是為了便於程式的除錯。若要產生每次不同的隨機數,可以使用srand( seed )函式進行隨機化,隨著seed的不同,就能夠產生不同的隨機數。

如大家所說,還可以包含time.h標頭檔案,然後使用srand(time(0))來使用當前時間使隨機數發生器隨機化,這樣就可以保證每兩次執行時可以得到不同的隨機數序列(只要兩次執行的間隔超過1秒)。

9樓:匿名使用者

int rand100 = (((double) rand() /

(double) rand_max) * range_max + range_min); 你讓range_max=1range_min = 0

10樓:胡小巖唐小井

產生的是整型

(rand()%1001)*1.0/1000

c++中rand()每次產生的隨機數是不是應該不相同嗎?但是我的怎麼都一樣啊 ???是編譯器改進的原因嗎?

11樓:

#include

main裡面加du上

for(int i=0:i<4;i++)

{srand((unsinged)time(null) );

cout<隨機

zhi數dao要種子的,專是偽隨機,並不是真屬是隨機

12樓:匿名使用者

看著是不一樣,不過如果你反覆啟動這個程式呢,就一樣了,加上種子就不一樣了,哦,樓上的型別寫錯了,應該是unsigned

內的隨機數轉化為內的均勻隨機數,需實施的變換為A a a1 8B a a1 8 2C a

根據一du次函式的單調性,a 當zhia 0,1 時,a a1 8 dao 0,8 故內a不對 容 b 當a 0,1 時,a a1 8 2 2,10 故b不對 c 當a 0,1 時,a a1 8 2 2,6 故c對 d 當a 0,1 時,a a1 6 0,6 故d不對,故選c c語言怎樣產生一定範圍...

c語言問題,請問如何才能產生隨機數

srand int value rand max 1 min min c語言怎樣產生一定範圍的隨機數?編譯環境為 vs2013 產生1到3的整型隨機數的 如下 include include include define max 3 這個函式的意義為 隨機生成最大的數為3 define min 1 ...

如何在EXCEL中自動生成隨機數A,B,C,D,且該4數字之和不大於

在a1輸入 int rand 11 在a2輸入 int rand 11 sum a 1 a1 然後選中a2下拉到a4就好了。隨機數的範圍有沒有限制?如果要生成 a,b 之間的隨機實數,請使用 rand b a a excel怎麼在某一範圍內生成隨機數?1 excel中可以利用randbetween函...