Тапочек, скрипт для вас. Полагаю, что такая псевдослучайность для вашей задачи приемлема.
function getDayOfYear() {
var now = new Date();
var start = new Date(now.getFullYear(), 0, 0);
var diff = (now - start) + ((start.getTimezoneOffset() - now.getTimezoneOffset()) * 60 * 1000);
var oneDay = 1000 * 60 * 60 * 24;
return Math.floor(diff / oneDay);
}
function random(day) {
var r0 = day * 33 + 85017801 + (new Date()).getFullYear();
var left = ((parseInt('01111111110000000000000000000000', 2) & r0) >>> 23);
var r1 = (r0 << 9 >>> 1) | left;
var right = ((parseInt('111111111', 2)) & r0) << 24 >>> 1;
var r2 = (r0 >>> 8) | right;
r0 = r1 + r2;
return 1 + ((Math.floor(r0 / 99) + day) % 56);
}
var pic = random(getDayOfYear());
document.write('<a href="'+pic+'.htm"><img src="'+pic+'.jpg"></a>');
Проверка работоспособности (результат в консоли):
<body>
<div>Номер года:
<input id="checkyear" type="number" value="2022"></div>
<div>День года (число от 1 до 366):
<input id="checkday" type="number">
<button onclick="testday();">Проверить дату</button></div>
<button onclick="testyear();">Вся статистка за год</button>
(результат в консоли браузера)
<script>
var inp = document.getElementById("checkday");
inp.value = getDayOfYear();
function testday(){
console.log("Проверка " + inp.value + ":", random(+inp.value));
}
function testyear(){
var o = {};
for( var i=1; i<=56; i++ ) o[i] = NaN;
for( var i=1; i<=366; i++){
var pic = random(i);
o[pic] = o[pic] ? o[pic] + 1 : 1;
console.log("День "+i+": картинка "+pic);
}
console.log( "Сколько раз в "+document.getElementById("checkyear").value+" году каждая картинка будет появляться:", o );
}
function getDayOfYear() {
var now = new Date();
var start = new Date(now.getFullYear(), 0, 0);
var diff = (now - start) + ((start.getTimezoneOffset() - now.getTimezoneOffset()) * 60 * 1000);
var oneDay = 1000 * 60 * 60 * 24;
return Math.floor(diff / oneDay);
}
console.log('Day of year: ' + getDayOfYear());
function random(day) {
var year = +document.getElementById("checkyear").value;
var r0 = day * 33 + 85017801 + year;
var left = ((parseInt('01111111110000000000000000000000', 2) & r0) >>> 23);
var r1 = (r0 << 9 >>> 1) | left;
var right = ((parseInt('111111111', 2)) & r0) << 24 >>> 1;
var r2 = (r0 >>> 8) | right;
r0 = r1 + r2;
return 1 + ((Math.floor(r0 / 99) + day) % 56);
}
</script>
</body>