Ik heb software dat een grote ruimte vult met rechthoeken die op elkaar aansluiten (geen gaten). Nu moet ik iedere rechthoek willekeurig inkleuren met precies één kleur. In totaal heb ik twee tot, soms wel, 10 kleuren. De inkleuring moet met "een druk op de knop" opnieuw willekeurig gedaan worden, met dus ook een andere verdeling van de kleuren. Tenslotte moet ik iedere inkleuring kunnen herhalen.
Tot zo ver is dit allemaal geen enkel probleem. Ik gebruik een randomfunctie, die ik kan seeden, waar ik x en y aan kan geven. Hiervan krijg ik een willekeurige kleur terug. Om te kunnen reproduceren onthoud ik de seed. Maar omdat ik de kleur kies op basis van een standaard (pseudo-)willekeurgenerator komen er ook klonters voor waarbij 3, 4 of meer aansluitende vakken dezelfde kleur hebben. Die klonters zijn willekeur, maar gevoelsmatig ziet het niet willekeurig uit. Ik ben op zoek om het algoritme te verbeteren, maar ben even vastgelopen.
Wat ik al geprobeerd heb
Heeft iemand suggesties welke (snelle) algoritmes een gevoelsmatig egale verdeling kunnen maken? Het principe lijkt me taalonafhankelijk. Dus ieder suggestie in iedere (programmeer-)taal is welkom.
Tot zo ver is dit allemaal geen enkel probleem. Ik gebruik een randomfunctie, die ik kan seeden, waar ik x en y aan kan geven. Hiervan krijg ik een willekeurige kleur terug. Om te kunnen reproduceren onthoud ik de seed. Maar omdat ik de kleur kies op basis van een standaard (pseudo-)willekeurgenerator komen er ook klonters voor waarbij 3, 4 of meer aansluitende vakken dezelfde kleur hebben. Die klonters zijn willekeur, maar gevoelsmatig ziet het niet willekeurig uit. Ik ben op zoek om het algoritme te verbeteren, maar ben even vastgelopen.
Wat ik al geprobeerd heb
- Perlin noise heb ik geprobeerd. Maar dit is bedoeld om juist aansluitende vakken locaties aan elkaar te relateren en biedt daarom wel willekeur, maar het wil juist de aansluitende vakken enigszins laten lijken op het vorigegeen verbetering van de situatie.
- Het kleuren van grafen heb ik bekeken. Voor zover ik het kan zien probeert men hiermee sluitende oplossingen te vinden, maar twee vakken naast elkaar mogen best dezelfde kleur hebben. Daarnaast zijn de algoritmes niet erg snel
- Tenslotte heb ik gekeken naar "Low-discrepancy sequences" zoals de Halton en Sobol sequences en de Hammersley set. Deze algoritmes heb ik nog niet kunnen seeden; ze geven altijd hetzelfde resultaat
Heeft iemand suggesties welke (snelle) algoritmes een gevoelsmatig egale verdeling kunnen maken? Het principe lijkt me taalonafhankelijk. Dus ieder suggestie in iedere (programmeer-)taal is welkom.