GNU/Linux 学习交流空间wangxinus.blog.chinaunix.net
wangxinus
全部博文(107)
Image(0)
XML(0)
OpenGL(0)
CEGUI(0)
SDL(0)
Qt4.x(0)
MFC/WinAPI(0)
wxWidgets(0)
Lua(0)
Python(0)
STL.Boost(0)
设计.编程(0)
资源.收集(0)
代码.片段(0)
编程.开发(0)
经验.心得(0)
内核.分析(0)
趣事.杂谈(0)
2010年(1)
2009年(106)
xuanyuan
tq235
linux4me
iCoolSea
77jessie
snowshua
0OKMijn0
albert_m
Bsolar
gengruif
abbotzqc
技术流宅
chas_zha
扬州炒蛋
分类: C/C++
2009-08-28 23:57:34
///////////////////////////////////////////////////////////////////////////// // ELEMENT GDI/DX Game Engine [Version 2002/3/1] ///////////////////////////////////////////////////////////////////////////// // Original Author : 邱海峰[Southdy] // OICQ : 359766 // EMAIL: topmud@263.net ///////////////////////////////////////////////////////////////////////////// // DESCRIPTION : // // OTHER : 邱海峰创建于2002/3/1 // // 使用此随机数生成器者请无条件保留以下版权声明: // (C) Copyright Beman Dawes 1998. Permission to copy, use, modify, sell and // distribute this software is granted provided this copyright notice appears // in all copies. This software is provided "as is" without express or implied // warranty, and with no claim as to its suitability for any purpose. ///////////////////////////////////////////////////////////////////////////// #pragma once ///////////////////////////////////////////////////////////////////////////// // 包含文件 ///////////////////////////////////////////////////////////////////////////// #include <cassert> ///////////////////////////////////////////////////////////////////////////// class EK_Rand { // 不要有改动这几个常量的想法,否则……打你屁屁! enum { modulus = 2147483647L, multiplier = 48271L, validation = 399268537L, q = modulus / multiplier, r = modulus % multiplier }; // 种子数 long value; // 0 < value <= modulus public: explicit min_rand( long seed_value=1 ) : value( seed_value ) { assert( value > 0 && value <= modulus ); } operator long() const { return value; } double fvalue() const { return double(value) / modulus; } min_rand& operator=( long new_value ) { value = new_value; assert( value > 0 && value <= modulus ); return *this; } long operator++() { value = multiplier*(value%q) - r*(value/q); if ( value <= 0 ) value += modulus; assert( value > 0 && value <= modulus ); return value; } long operator++(int) { long temp = value; operator++(); return temp; } long ten_thousandth() const { return validation; } long operator()( long n ) { return operator++() % n; } long operator()() { return operator++(); } typedef long argument_type; typedef long result_type; }; ///////////////////////////////////////////////////////////////////////////// //在boost里看到的绝对好东东。 //在保留原作者版权声明的条件下可以随意使用 :)
上一篇:A*寻路初探
下一篇:STL中的排序算法
登录 注册