线性同余算法 (LCG)
来源:互联网 发布:微店网络似乎存在问题 编辑:程序博客网 时间:2024/05/16 08:32
动机:为了校验客户端和服务器的数据,用到了boost::rand48 这个随机生成器算法。可怎么都找不到C# 与C++ 相同的rand48随机生成器算法的API以及库,于是决定自己写个 随机数生成器吧。
线性同余方法(LCG)是个产生伪随机数的方法。
计算公式:RandSeed=(A*RandSeed+C)%M
其中A,C,M是产生器设定的常数。
下面是我写的C#与C++ 相同的伪随机数代码:
#ifndef XK_Random_H#define XK_Random_H#include <stdio.h> #include <time.h> #include <iostream>#include <math.h>#include <string>#include <cassert>class xk_Random{public:xk_Random(uint64_t seed){rand_seed = seed;}uint64_t rand(uint64_t min, uint64_t max){assert(max>min && min>=0);uint64_t A = 0x5DEECE66D;uint64_t C = 0xB;uint64_t M = ((uint64_t)1 << 48);rand_seed = (rand_seed * A + C) % M;uint64_t bb = max - min;uint64_t value = rand_seed%bb + min;return value;}std::string rand_str(std::string data, int count){std::string retstr;for (uint32_t i = 0; i<count; i++){retstr += data[rand(0, data.length())];}return retstr;}private:uint64_t rand_seed;};#endif
class xk_Random { public xk_Random(ulong seed = 0) { rand_seed = seed; } public ulong rand(ulong min, ulong max) { System.Diagnostics.Debug.Assert(max > min && min >= 0); ulong A = 0x5DEECE66D; ulong C = 0xB; ulong M = ((ulong)1 << 48); rand_seed = (rand_seed * A + C) % M; ulong bb = max - min; ulong value = rand_seed % bb + min; return value; } private ulong rand_seed; };
0 0
- 线性同余算法 (LCG)
- RNG分析:线性同余法 LCG
- 线性同余算法
- 线性同余方程
- 线性同余 - 随机数
- 线性同余方程
- 线性同余方程
- 随机数 -- 线性同余
- 线性同余方程
- 线性同余法
- 线性同余方程
- 伪随机生成算法(线性同余算法)
- 扩展欧几里德算法 线性同余方程 中国剩余定理
- 扩展欧几里德算法 线性同余方程 中国剩余定理
- 扩展欧几里德算法 线性同余方程 中国剩余定理
- 扩展欧几里德算法 线性同余方程 中国剩余定理
- 扩展欧几里德算法 线性同余方程 中国剩余定理
- 生成伪随机数的算法–线性同余法
- 在vim中执行shell指令
- C/C++实现大数模指数运算-二进制算法(a^e mod m 当e特别巨大时...)
- adfasfasfsa#随机字母=50#sfwradfasfasfsa#随机大写字母=20#sfwradfasfasfsa#随机汉字=60#sfwr#随机汉字=10#石家庄石家庄
- Aanya’s Day at the Beach
- vim代码自动对齐
- 线性同余算法 (LCG)
- 确定性素性测试思想之Eratosthenes筛选法
- adfasfasfsaRKEKmnMRxUZKpxTgBEIqpNytOCOmhwUEZxkSsZgBuvkWqZtPYYoAsfwradfasfasfsaKVQCFFYRMMSAZKSVGAUNKD
- adfasfasfsaMmQZmINbkaRCnFngxbsGGXSgMpbRrMgQmMfLzwPHbdOTPVvoIDZFsfwradfasfasfsaZXTUGSGYQXRLWAINNNQAGS
- 第四章 碎片的生命周期
- 1_算法_八皇后问题
- API接口JWT方式的Token认证(下),客户端(Android)的实现
- NFC
- 插入排序(Insertion sort)