隨機數的生成

2021-09-06 01:16:30 字數 1603 閱讀 4086

函式一:int rand

(void

);

從srand

(seed

)中指定

seed

開始,返回乙個範圍介於

[seed

,rand_max

(0x7fff

))的隨機整數。預設情況下使用的是srand(1)。

函式二:void srand

(unsigned seed

);

引數seed

是rand

()的隨機種子,即用來初始化

rand

()的起始值。

for(int i=0;i<10;i++)

cout《每次輸出的都是: 1   7   4   0   9   4   8   8   2   4

srand(1);

for(int i=0;i<10;i++)

cout《每次輸出的都是: 1   7   4   0   9   4   8   8   2   4

srand(5);

for(int i=0;i<10;i++)

cout《每次輸出的都是:4   3   5   9   0   0   7   9   2    0

換為srand((unsigned)time(null))

後每次執行輸出的都不一樣。但是

time(0)

只能精確到秒,同一秒內

time(0)

返回的結果是一樣的。

方案1

#include

#include

#include

#include

using namespace std;

int main()

方案2

不使用c++

提供的rand

(),而使用自己的線性同餘法製造隨機數。

const long mul=16807l;             

const long add=0;                   

const long mod=0x7fffffffl;   

//線性同餘法產生無符號隨機數

inline unsigned myrand()

方案3

把線性同餘法lcg(linear congruential generator) 的add

引數改為

13849

採用g++編譯器在我的機子上執行

10次:

方案count平均值

平均執行時間(秒)

1997918.1

2.42

997840.3

1.53

997936.9

1.4看來方案3表現的很不錯,關鍵上時間上很佔優勢!

現在又有乙個新的產生隨機數的演算法叫作mersenne twister

,據說是目前最好的rng,

python

和ruby

都採用它作為預設的隨機數生成演算法。

生成隨機數 js生成隨機數的方法

這幾天一直在研究前台div元素的隨機定位的問題,而這裡面涉及到了js生成隨機數的方法,就下功能研究了一翻,並整理了一些資料以防以後再用得到。在js中可以使用 math 對像來實現隨機數的生成,但是這個對像有幾個方法,先了解一下 1 js中的 ceil 方法 ceil 方法對數字進行四捨五入,向上取整...

隨機生成隨機數

現畫乙個command命令按鈕,進行貼上。private sub command1 click show me scale 0,0 18,8 me.auto redraw true me.draw mode 2 circle 3,4 3,vb red me.auto redraw false lin...

隨機數生成

原型 void srand unsigned seed 用法 srand和rand 配合使用產生偽隨機數序列。rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。sr...