关于windows下的c++的rand函数详解

rand不是真正的随机函数,是伪随机函数

srand设置随机函数种子


srand设置一个参数后,每调用一次rand产生一个随机数

srand(1000001)

rand  –  21589

rand  –  29335

rand  –  14469

 

srand参数相同,多次调用rand依次返回的值相同,

srand (1000001)

rand  - 21589

srand (1000001)

rand  - 21589

srand (1000001)

rand  - 21589

 

 

srand入参每增加1,rand返回值增加3 (从我的电脑上看到的,其它可能会有不同,不知道)

srand (1000001)

rand  - 21589

srand (1000002)

rand  - 21592

srand (1000003)

rand  - 21595


所以通常来说,一个模块srand一般只调用一次,千万不要在ontimer之类的函数中调用srand和rand


如果只在主线程调用

srand (1000001)

则1:子线程不调用srand, 子线程1,子线程2同时使用主线程的种子,依次产生随机数

则2:子线程1,子线程2,都调用srand (1000001),则子线程1,子线程2,各自产生随机数