random.cpp
来自「漂亮美观实用的,有VC+编制的动态曲线显示源码,只需稍做改进就可用于各行各业」· C++ 代码 · 共 64 行
CPP
64 行
#include <malloc.h>
#include "random.h"
RndGen::~RndGen()
{
if (oldrand)
free(oldrand);
}
void RndGen::init_random(const float randomseed)
{
float new_random = 1.0e-9f;
float prev_random = randomseed;
oldrand = (float*)calloc(55, sizeof(float));
oldrand[54] = randomseed;
for (int i = 0; i < 53; i ++)
{
int j = (21 * (i + 1)) % 55;
oldrand[j] = new_random;
new_random = prev_random - new_random;
if (new_random < 0) new_random ++;
prev_random = oldrand[j];
}
advance_random();
advance_random();
advance_random();
n = 0;
}
void RndGen::advance_random()
{
float new_random;
for (int i = 0; i <= 23; i ++)
{
new_random = oldrand[i] - oldrand[i+31];
if (new_random < 0)
new_random ++;
oldrand[i] = new_random;
}
for (i = 24; i <= 54; i ++)
{
new_random = oldrand[i] - oldrand[i-24];
if (new_random < 0)
new_random ++;
oldrand[i] = new_random;
}
}
float RndGen::randm()
{
n ++;
if (n > 54)
{
n = 1;
advance_random();
}
return oldrand[n];
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?