一个简单的伪随机数发生算法(转)
2017-09-07 10:33
344 查看
源:一个简单的伪随机数发生算法
//此代码纯属交流目的,如用作安全领域,后果自负 #include <stdint.h> #include <stdlib.h> //! \brief random seed static uint16_t s_hwRandomSeed = 0xAA55; static uint8_t s_chRandomTable[] = { 0x12,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF, 0xF1,0xE2,0xD3,0xC4,0xB5,0xA6,0x97,0x88}; /*! \note set random generator seed * \param hwSeed random seed * \return none */ void set_random_seed( uint16_t hwSeed ) { s_hwRandomSeed ^= hwSeed; } /*! \note get a random integer * \param none * \return random integer value */ uint16_t get_random_u16( void ) { uint16_t *phwResult = (uint16_t *)&s_chRandomTable[(s_hwRandomSeed & 0x0E)]; *phwResult += s_hwRandomSeed; s_hwRandomSeed ^= *phwResult; return *phwResult; } /*! \note get a random byte * \param none * \return random integer value */ uint8_t get_random_u8( void ) { return get_random_u16(); }
/* 最常用的随机算法,C语言标准库函数的结果和这个一致 这里是32位机用的,8位机自己加UL,改int为long */ int seed; void srand(int s) { seed = s; } int rand() { seed = seed * 22695477 + 1; }
相关文章推荐
- 简单算法 - 用两个栈实现一个队列
- 发布一个Java写的俄罗斯方块源码 算法简单(300行) 注释详细
- 漫水填充算法的一个简单实现(Qt版)
- 【bzoj5016】[Snoi2017]一个简单的询问 莫队算法
- 一个求100以内质数的简单算法
- 一个简单的实现找出数组中一个数字出现次数最多的数字的算法
- 一个基于Java的简单分组处理算法
- 一天一个算法题-简单的-递归
- 一个简单抽奖算法的实现以及如何预防超中
- 一个简单的镜头稳定算法
- 快速选择算法的一个简单实现
- 一个简单的扑克牌洗牌算法|无重复
- 如何评价一个伪随机数生成算法的优劣
- 伪随机数简单算法
- PHP面试的一个简单算法题
- 实现一个简单的c++ list容器(含sort排序 链表归并算法实现)
- 漫水填充算法的一个简单实现(Qt版)
- (数据结构)图的应用,一个简单的学校地图.包含的内容:图的最短路径算法 和 图的深度优先遍历算法
- 一个简单可靠的五子棋算法(转)
- (二)一个简单的加数算法