35 lines
732 B
TypeScript
35 lines
732 B
TypeScript
import { JSRandomEngine } from "./JSRandomEngine";
|
|
import { LCG } from "./LCG";
|
|
import { RandomEngine, SeedableRandomEngine } from "./RandomEngine";
|
|
|
|
export class SeedGenerator
|
|
{
|
|
static fromText( source:string, randomEngine:SeedableRandomEngine<any> = null )
|
|
{
|
|
if ( ! randomEngine )
|
|
{
|
|
randomEngine = new LCG();
|
|
}
|
|
|
|
randomEngine.setSeed( 18593 );
|
|
|
|
let seed = 0;
|
|
|
|
for ( let i = 0; i < source.length; i++ )
|
|
{
|
|
let characterValue = source.charCodeAt( i );
|
|
|
|
seed += characterValue * 767417 + 13 + randomEngine.next() * characterValue;
|
|
|
|
if ( seed > 32000 )
|
|
{
|
|
seed = seed % 32000;
|
|
}
|
|
}
|
|
|
|
console.log( "SEED FROM TEXT:", source, seed )
|
|
|
|
return seed;
|
|
|
|
}
|
|
} |