text: /**
   * @module prng
   */
  
  import { Mt19937 } from './Mt19937.js'
  import { Xoroshiro128plus } from './Xoroshiro128plus.js'
  import { Xorshift32 } from './Xorshift32.js'
  import * as time from '../../time.js'
  
  const DIAMETER = 300
  const NUMBERS = 10000
  
  const runPRNG = (name, Gen) => {
    console.log('== ' + name + ' ==')
    const gen = new Gen(1234)
    let head = 0
    let tails = 0
    const date = time.getUnixTime()
    const canvas = document.createElement('canvas')
    canvas.height = DIAMETER
    canvas.width = DIAMETER
    const ctx = canvas.getContext('2d')
    const vals = new Set()
    ctx.fillStyle = 'blue'
    for (let i = 0; i < NUMBERS; i++) {
      const n = gen.next() & 0xFFFFFF
      const x = (gen.next() >>> 0) % DIAMETER
      const y = (gen.next() >>> 0) % DIAMETER
      ctx.fillRect(x, y, 1, 2)
      if ((n & 1) === 1) {
        head++
      } else {
        tails++
      }
      if (vals.has(n)) {
        console.warn(`The generator generated a duplicate`)
      }
      vals.add(n)
    }
    console.log('time: ', time.getUnixTime() - date)
    console.log('head:', head, 'tails:', tails)
    console.log('%c       ', `font-size: 200px; background: url(${canvas.toDataURL()}) no-repeat;`)
    const h1 = document.createElement('h1')
    h1.insertBefore(document.createTextNode(name), null)
    document.body.insertBefore(h1, null)
    document.body.appendChild(canvas)
  }
  
  runPRNG('mt19937', Mt19937)
  runPRNG('xoroshiro128plus', Xoroshiro128plus)
  runPRNG('xorshift32', Xorshift32)
  