visual studio随机数问题

来源:互联网 发布:真心话大冒险的软件 编辑:程序博客网 时间:2024/05/05 12:20

项目过程中遇到需要使用随机数。于是研究了一下visual studio 随机数的机制。

可以收纳成公共方法的接口。

val 在区间【m,n):

(rand()%(n - m+1) )   + m



srand()设置随机数的种子

rand()伪随机数产生器,它是基于 “随机种子” 的线性随机。种子不同,随机数也不同。


一般使用的机制,以时间为种子。

srand(unsigned (time (null) ));

弊端:在1s内使用的时间种子是一样的,导致1s内产生的随机数是一样的。


相对更好的随机方式

LARGE_INTERGER seed;


//初始一个微妙级的时间种子

QueryPerformanceFrequency(&seed);

QeryPerformanceCounter(&seed);

srand(seed.QuadPart);


int randVal = rand();

MSDN说明:

typedefunion _ULARGE_INTEGER {
  struct {
    DWORD LowPart;
    DWORD HighPart;
  };
  struct {
    DWORD LowPart;
    DWORD HighPart;
  } u;
  ULONGLONG QuadPart;
} ULARGE_INTEGER, *PULARGE_INTEGER;




0 0
原创粉丝点击