我是靠谱客的博主 犹豫刺猬,最近开发中收集的这篇文章主要介绍一个简单的伪随机数发生算法(转),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

源:一个简单的伪随机数发生算法

//此代码纯属交流目的,如用作安全领域,后果自负

#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;
}

 

最后

以上就是犹豫刺猬为你收集整理的一个简单的伪随机数发生算法(转)的全部内容,希望文章能够帮你解决一个简单的伪随机数发生算法(转)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部