Merge branch 'prng-seed' into 'master'

Prng seed

See merge request panki/bingo!2
merge-requests/3/head
Felix Pankratz 2 years ago
commit d3b5e97286

@ -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);

@ -18,7 +18,8 @@ img {
width: 100%; width: 100%;
} }
h1 { h1, p {
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
text-align: center; text-align: center;
margin: 5px;
} }

Loading…
Cancel
Save