怎么产生[0,42亿]的随机数???
时间:2011-12-08
来源:互联网
作者: weiwuyuan 发布时间: 2011-12-08
unsigned long _Rn = _CSTD rand() & _RANDOM_MAX;
for (; _Rm < _Index && _Rm != ~0UL;
_Rm = _Rm << _RANDOM_BITS | _RANDOM_MAX)
_Rn = _Rn << _RANDOM_BITS
| (_CSTD rand() & _RANDOM_MAX); // build random valueC/C++ code
作者: mingliang1212 发布时间: 2011-12-08
unsigned long _Rm = _RANDOM_MAX; unsigned long _Rn = rand() & _RANDOM_MAX; for (; _Rm < _Index && _Rm != ~0UL; _Rm = _Rm << _RANDOM_BITS | _RANDOM_MAX) _Rn = _Rn << _RANDOM_BITS | ( rand() & _RANDOM_MAX); // build random value
作者: mingliang1212 发布时间: 2011-12-08
unsigned long _Rm = _RANDOM_MAX;
unsigned long _Rn = _CSTD rand() & _RANDOM_MAX;
for (; _Rm < _Index && _Rm != ~0UL;
_Rm = _Rm << _RANDOM_BITS | _RANDOM_MAX)
_Rn = _Rn << _RANDOM_BITS
……
这代码用不了。
作者: weiwuyuan 发布时间: 2011-12-08
C/C++ code
unsigned long _Rm = _RANDOM_MAX;
unsigned long _Rn = rand() & _RANDOM_MAX;
for (; _Rm < _Index && _Rm != ~0UL;
_Rm = _Rm << _RANDOM_BITS | _RANDOM_MAX)
_Rn = _Rn << _……
找不到宏,用不了呢。
作者: weiwuyuan 发布时间: 2011-12-08
引用 1 楼 mingliang1212 的回复:
unsigned long _Rm = _RANDOM_MAX;
unsigned long _Rn = _CSTD rand() &amp; _RANDOM_MAX;
for (; _Rm < _Index &amp;&amp; _Rm != ~0UL;
_Rm = _Rm << _RANDOM_BITS | _……
哪个常量用不了?
作者: mingliang1212 发布时间: 2011-12-08
引用 3 楼 weiwuyuan 的回复:
引用 1 楼 mingliang1212 的回复:
unsigned long _Rm = _RANDOM_MAX;
unsigned long _Rn = _CSTD rand() &amp;amp; _RANDOM_MAX;
for (; _Rm < _Index &amp;amp;&amp;amp; _Rm != ~……
都用不了。你包含了什么文件??
作者: weiwuyuan 发布时间: 2011-12-08
class random_base { public: typedef unsigned int IntType; typedef IntType result_type; typedef IntType argument_type; enum{ RANDOM_MAX = 0x7fffffff,RANDOM_BIT = 31 }; random_base() :m_seed(0) {} random_base(IntType seed) :m_seed(seed) {} result_type operator()() { m_seed = m_seed * 214013L + 2531011L; IntType high_bits = m_seed & 0x7fff0000; m_seed = m_seed * 214013L + 2531011L; return high_bits | (m_seed >>16); } result_type operator()(IntType max){ return (*this)() % max; } void set_seed(IntType seed){ m_seed = seed; }; private: IntType m_seed; };
那么就用这个我写的吧》。
用法如下:
random_base random(随机种子);
int a = random();//这样生成随机数
作者: mingliang1212 发布时间: 2011-12-08
int i = random(1000000);//生成 0 - 1000000之间的随机数。 最大随机数是 2 ^ 32 (大于40亿)。
作者: mingliang1212 发布时间: 2011-12-08
C/C++ code
class random_base
{
public:
typedef unsigned int IntType;
typedef IntType result_type;
typedef IntType argument_type;
enum{ RANDOM_MAX = 0x7fffffff,RANDOM_BIT = 3……
能写个函数么?这点小东西用类有点不划算吧。
作者: weiwuyuan 发布时间: 2011-12-08
意思就是让你产生随机的int,这时候最好别用srand和rand,用CryptoAPI吧
作者: jackyjkchen 发布时间: 2011-12-08
还有一种用法就是:
int i = random(1000000);//生成 0 - 1000000之间的随机数。 最大随机数是 2 ^ 32 (大于40亿)。
我改了一下,您看这样子行么:?
C/C++ code
unsigned int MyRand() { static unsigned int seed = (unsigned int)time(NULL); seed = seed * 214013L + 2531011L; unsigned int high_bits = seed & 0xffff0000; seed = seed * 214013L + 2531011L; return high_bits | (seed >>16); }
作者: weiwuyuan 发布时间: 2011-12-08
enum{ RANDOM_MAX = 0xffffffff,RANDOM_BIT = 32 }; static unsigned long m_seed; unsigned long mrand(){ m_seed = m_seed * 214013L + 2531011L; unsigned long high_bits = m_seed & 0xffff0000; m_seed = m_seed * 214013L + 2531011L; return high_bits | (m_seed >>16); } void set_seed(unsigned long seed){ m_seed = seed; };
之前的代码只能生成 0- 2 ^31 这么大的,这个可以到 2^32
作者: mingliang1212 发布时间: 2011-12-08
引用 8 楼 mingliang1212 的回复:
还有一种用法就是:
int i = random(1000000);//生成 0 - 1000000之间的随机数。 最大随机数是 2 ^ 32 (大于40亿)。
我改了一下,您看这样子行么:?
C/C++ code
unsigned int MyRand()
{
static unsigned it s……
嗯,如果在32位的机器上。
作者: mingliang1212 发布时间: 2011-12-08
作者: weiwuyuan 发布时间: 2011-12-08
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28