mirror of
https://github.com/eliasstepanik/strudel.git
synced 2026-01-17 16:38:31 +00:00
Add pairwise independence test, tweak randOffset
This commit is contained in:
parent
c98b0e9687
commit
4e2a5e1663
@ -7,7 +7,7 @@ This program is free software: you can redistribute it and/or modify it under th
|
|||||||
import * as krill from './krill-parser.js';
|
import * as krill from './krill-parser.js';
|
||||||
import * as strudel from '@strudel.cycles/core';
|
import * as strudel from '@strudel.cycles/core';
|
||||||
|
|
||||||
const randOffset = 0.0002;
|
const randOffset = 0.0003;
|
||||||
|
|
||||||
const applyOptions = (parent, code) => (pat, i) => {
|
const applyOptions = (parent, code) => (pat, i) => {
|
||||||
const ast = parent.source_[i];
|
const ast = parent.source_[i];
|
||||||
|
|||||||
@ -140,8 +140,20 @@ describe('mini', () => {
|
|||||||
expect(haps.length < 230).toBe(true);
|
expect(haps.length < 230).toBe(true);
|
||||||
// 'Had too many cycles remaining after degradeBy 0.8');
|
// 'Had too many cycles remaining after degradeBy 0.8');
|
||||||
});
|
});
|
||||||
it('supports lists', () => {
|
it('supports multiple independent uses of the random choice operator ("|")', () => {
|
||||||
expect(minV('a:b c:d:[e:f] g')).toEqual([['a', 'b'], ['c', 'd', ['e', 'f']], 'g']);
|
const numCycles = 1000;
|
||||||
|
const values = mini('[a|b] [a|b]')
|
||||||
|
.queryArc(0, numCycles)
|
||||||
|
.map((e) => e.value);
|
||||||
|
const observed = { aa: 0, ab: 0, ba: 0, bb: 0 };
|
||||||
|
for (let i = 0; i < values.length; i += 2) {
|
||||||
|
const chunk = values.slice(i, i + 2);
|
||||||
|
observed[chunk.join('')]++;
|
||||||
|
}
|
||||||
|
for (const count of Object.values(observed)) {
|
||||||
|
// Should fall within 99% confidence interval for binomial with p=0.25.
|
||||||
|
expect(215 <= count && count <= 286).toBe(true);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
it('supports the random choice operator ("|") with nesting', () => {
|
it('supports the random choice operator ("|") with nesting', () => {
|
||||||
const numCycles = 900;
|
const numCycles = 900;
|
||||||
@ -169,4 +181,7 @@ describe('mini', () => {
|
|||||||
// PRNG, this test should succeed
|
// PRNG, this test should succeed
|
||||||
expect(chisq <= 15.086).toBe(true);
|
expect(chisq <= 15.086).toBe(true);
|
||||||
});
|
});
|
||||||
|
it('supports lists', () => {
|
||||||
|
expect(minV('a:b c:d:[e:f] g')).toEqual([['a', 'b'], ['c', 'd', ['e', 'f']], 'g']);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user