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会取系统时间的模来作为参数,同样的时间种子会产生同样的序列,每次产生随机数的时间间隔相差不大的话,产生的随机数序列的第一个数值往往也相差不大,对于一些要求严格的场合不太适用。

所以为了使每次产生随机数的差别较大,随机性效果好,可以增加相邻两次产生随机数的时间间隔,比如用系统毫秒和微妙时间取一次模然后作为时间种子。

既适用于多线程多进程也适用于频繁调用随机数函数,可以得到各不相同的随机数序列。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏King_3的技术专栏

leetcode-598-Range Addition II

851
来自专栏osc同步分享

算法基础

分治法的基本思想: 将一个规模为 n 的问题分解为 k 各规模较小的子问题, 这些子问题互相独立且与原问题是同类型问题。 递归地解这些子问题, 然后把各个子问题...

3379
来自专栏青青天空树

取随机数

  常用于去随机数的函数为rand()(在stdlib.h头文件中,不同的编译器可能有不同),但是实际在使用这个函数时却发现每次程序运行产生的数都是一样的,这是...

732
来自专栏瓜大三哥

视频压缩编码技术(H.264) 之算术编码

早在1948年,香农就提出将信源符号依其出现的概率降序排序,用符号序列累计概率的二进值作为对芯源的编码,并从理论上论证了它的优越性。1960年, Peter E...

643
来自专栏木东居士的专栏

Bloom Filter 的基本原理和实现

Bloom Filter 是由 Burton H. Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集...

3952
来自专栏机器学习算法全栈工程师

经典算法题之Maximal Square

作者:叶 虎 编辑:邓高锦 Maximal Square是道非常有意思的算法题。它是一个典型的动态规划问题,同时也是2017京东面试题,2016华为机考题...

3679
来自专栏Android机动车

数据结构学习笔记——总述

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。

491
来自专栏小二的折腾日记

LeetCode-56and57-Merge-Intervals

如例子中所示,每个数组的前后分别表示开始和结束,工作是合并有重叠的数组。例如,由于[1,3]和[2,6]有重叠,故直接改为[1,6]后输出。 想法还是比较简单的...

572
来自专栏专知

【干货】计算机视觉实战系列03——用Python做图像处理

【导读】专知成员Hui上一次为大家介绍Matplotlib的使用,包括绘图,绘制点和线,以及图像的轮廓和直方图,这一次为大家详细讲解Numpy工具包中的各种工具...

38910
来自专栏null的专栏

数据结构和算法——kd树

一、K-近邻算法 K-近邻算法是一种典型的无参监督学习算法,对于一个监督学习任务来说,其mm个训练样本为: {(X(1),y(1)),(X(2),y(2)),⋯...

3619

扫码关注云+社区