HERD--位运算
Posted Haonan Hacking
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HERD--位运算相关的知识,希望对你有一定的参考价值。
判断一个数是否是2的次方
1 static inline int hrd_is_power_of_2(uint32_t n)
2 {
3 return n && !( n & (n - 1 ));
4 }
快速随机数
static inline uint32_t hrd_fastrand(uint64_t *seed)
{
*seed=*seed * 1103515245 + 12345;
return (uint32_t)(*seed >> 32);
}
一般种子数seed会取系统时间的模来作为参数,同样的时间种子会产生同样的序列,每次产生随机数的时间间隔相差不大的话,产生的随机数序列的第一个数值往往也相差不大,对于一些要求严格的场合不太适用。
所以为了使每次产生随机数的差别较大,随机性效果好,可以增加相邻两次产生随机数的时间间隔,比如用系统毫秒和微妙时间取一次模然后作为时间种子。
既适用于多线程多进程也适用于频繁调用随机数函数,可以得到各不相同的随机数序列。
以上是关于HERD--位运算的主要内容,如果未能解决你的问题,请参考以下文章
markdown git reset命令 - herd reset
[USACO17DEC]Standing Out from the Herd
2021.8.17提高B组模拟8T2 + P7296 [USACO21JAN] Uddered but not Herd(状压dp)(离散化)