#pragma once
#include <Windows.h>
#include <assert.h>
class Random
{
public:
Random(void);
~Random(void);
int Rander(int num);
void RanderSort(int* pArray,int nSize); // 如果大小100,则结果为0~99(随即)
private:
int LogicValue(int nValue,bool* pFlag,int nSize);
protected:
DWORD m_dSeed; // 种子
};
/////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Random.h"
Random::Random(void)
{
m_dSeed = time(NULL);
srand(m_dSeed);
}
Random::~Random(void)
{
}
int Random::Rander(int num)
{
return rand()%num;
}
int Random::LogicValue(int nValue,bool* pFlag,int nSize)
{
int nResult = 0;
for (int i=0;i<nSize;i++)
{
if (!pFlag[i]) // 没被取出
{
if (nResult==nValue)
return i;
nResult++;
}
else continue;
}
}
void Random::RanderSort(int* pArray,int nSize)
{
assert(pArray&&nSize>0);
int nTemp;
bool* bTemp = new bool[nSize]; // 是否取出
memset(bTemp,0,sizeof(bool)*nSize);
for (int i=0;i<nSize;i++)
{
nTemp = Rander(nSize-i);
nTemp = LogicValue(nTemp,bTemp,nSize);
pArray[i]=nTemp;
bTemp[nTemp]=true;
}
delete[] bTemp;
}
小黑屋|手机版|Archiver|鱼C工作室
( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)
GMT+8, 2025-5-29 06:02
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.