函式一: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...