Merge branch 'prng-seed' into 'master'
Prng seed See merge request panki/bingo!2
This commit is contained in:
commit
d3b5e97286
54
script.js
54
script.js
@ -43,7 +43,7 @@ let fields = [
|
|||||||
'Aus Plastik Müll wird was gebaut',
|
'Aus Plastik Müll wird was gebaut',
|
||||||
'Es wird geschrien',
|
'Es wird geschrien',
|
||||||
'es wird gesungen',
|
'es wird gesungen',
|
||||||
'„ mir ist kalt“',
|
'„mir ist kalt“',
|
||||||
'Dinge bekommen Namen',
|
'Dinge bekommen Namen',
|
||||||
'„das ist auf einem anderen Level"',
|
'„das ist auf einem anderen Level"',
|
||||||
'kleine Krebse',
|
'kleine Krebse',
|
||||||
@ -52,14 +52,19 @@ let fields = [
|
|||||||
|
|
||||||
const FREE_FIELD_TEXT = "Freies Parken"
|
const FREE_FIELD_TEXT = "Freies Parken"
|
||||||
|
|
||||||
|
const seed = Date.now().toString();
|
||||||
|
var prng_hash_seed = cyrb128(seed);
|
||||||
|
let rand = sfc32(prng_hash_seed[0], prng_hash_seed[1], prng_hash_seed[2], prng_hash_seed[3]);
|
||||||
|
|
||||||
let shuffled = fields
|
let shuffled = fields
|
||||||
.map(value => ({ value, sort: Math.random() }))
|
.map(value => ({ value, sort: rand() }))
|
||||||
.sort((a, b) => a.sort - b.sort)
|
.sort((a, b) => a.sort - b.sort)
|
||||||
.map(({ value }) => value)
|
.map(({ value }) => value)
|
||||||
|
|
||||||
shuffled.splice(12, 0, FREE_FIELD_TEXT);
|
shuffled.splice(12, 0, FREE_FIELD_TEXT);
|
||||||
|
|
||||||
function generateTable() {
|
function generateTable() {
|
||||||
|
|
||||||
let table = document.querySelector("table");
|
let table = document.querySelector("table");
|
||||||
let thead = table.createTHead();
|
let thead = table.createTHead();
|
||||||
let row = null;//thead.insertRow();
|
let row = null;//thead.insertRow();
|
||||||
@ -94,7 +99,52 @@ function generateTable() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// hash function, thx stackoverflow :3
|
||||||
|
function cyrb128(str) {
|
||||||
|
let h1 = 1779033703, h2 = 3144134277,
|
||||||
|
h3 = 1013904242, h4 = 2773480762;
|
||||||
|
for (let i = 0, k; i < str.length; i++) {
|
||||||
|
k = str.charCodeAt(i);
|
||||||
|
h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
|
||||||
|
h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
|
||||||
|
h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
|
||||||
|
h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
|
||||||
|
}
|
||||||
|
h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
|
||||||
|
h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
|
||||||
|
h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213);
|
||||||
|
h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);
|
||||||
|
return [(h1^h2^h3^h4)>>>0, (h2^h1)>>>0, (h3^h1)>>>0, (h4^h1)>>>0];
|
||||||
|
}
|
||||||
|
|
||||||
|
function sfc32(a, b, c, d) {
|
||||||
|
return function() {
|
||||||
|
a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
|
||||||
|
var t = (a + b) | 0;
|
||||||
|
a = b ^ b >>> 9;
|
||||||
|
b = c + (c << 3) | 0;
|
||||||
|
c = (c << 21 | c >>> 11);
|
||||||
|
d = d + 1 | 0;
|
||||||
|
t = t + d | 0;
|
||||||
|
c = c + t | 0;
|
||||||
|
return (t >>> 0) / 4294967296;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function mulberry32(a) {
|
||||||
|
return function() {
|
||||||
|
var t = a += 0x6D2B79F5;
|
||||||
|
t = Math.imul(t ^ t >>> 15, t | 1);
|
||||||
|
t ^= t + Math.imul(t ^ t >>> 7, t | 61);
|
||||||
|
return ((t ^ t >>> 14) >>> 0) / 4294967296;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
generateTable();
|
generateTable();
|
||||||
const center_field = document.querySelector('#center-field');
|
const center_field = document.querySelector('#center-field');
|
||||||
center_field.innerHTML = '<img src="img/7-vs-wild-logo.svg" alt="7 vs. Wild Logo"></img>'
|
center_field.innerHTML = '<img src="img/7-vs-wild-logo.svg" alt="7 vs. Wild Logo"></img>'
|
||||||
|
|
||||||
|
let seed_elem = document.createElement('p');
|
||||||
|
seed_elem.innerText = seed;
|
||||||
|
document.body.appendChild(seed_elem);
|
||||||
|
Loading…
Reference in New Issue
Block a user