因为最近在写一个小应用时,需要用到随机数,所以就自己写了一个随机数生成器。
示例代码如下:
// 随机数生成器
#include <iostream>
#include <windows.h>
using namespace std;
class CRand
{
public:
CRand();
~CRand();
int Rand(int range); // 获取整型随机数
float Rand(); // 获取0.0到1.0之间的两位小数
void ResetSeed(); // 重置随机数种子
private:
int m_Seed; // 随机数种子
int a;
int b;
int c;
};
CRand::CRand()
{
m_Seed = GetTickCount();
a = 7777777;
b = 7777;
c = 2111111111;
}
CRand::~CRand()
{
}
int CRand::Rand(int range)
{
int result = (m_Seed % a) * (m_Seed / b) - c;
m_Seed = result;
while (result < 0)
{
result = -result;
}
return result % range;
}
float CRand::Rand()
{
int tmp = Rand(100); // 获得0到100之间的值
float result = tmp / 100.0f;
return result;
}
void CRand::ResetSeed()
{
m_Seed = GetTickCount();
}
int main()
{
CRand random = CRand();
for (int i = 0; i < 500; i++)
{
if (i % 13 == 0)
cout << endl;
cout << random.Rand(150) << " ";
}
for (int i = 0; i < 500; i++)
{
if (i % 13 == 0)
cout << endl;
cout << random.Rand() << " ";
}
return 0;
}