组会名单

为了确保每个人都能公平地参与每周的组会汇报,汇报的顺序将采用以下方式生成:以当年已度过的周数为种子,使用线性同余法生成随机数,然后将名单进行重新排列。名单会每周自动更新,生成名单的代码放在页面末尾。

代码

<script>
    function seededRandom(seed) {
        const a = 1664525; // 乘数
        const c = 1013904223; // 增量
        const m = 4294967296; // 模数 (2^32)
        seed = (a * seed + c) % m;
        return seed;
    }
    function shuffleArray(array) {
        const today = new Date(); // 创建一个表示当前日期和时间的 Date 对象
        // 计算今天是一年中的第几周
        let seed = Math.ceil((today - new Date(today.getFullYear(), 0, 1)) / (7 * 24 * 60 * 60 * 1000))+4;
        for (let i = 0; i < names.length; i++) {
            seed = seededRandom(seed);
            const j = Math.floor(seed/4294967296 * (i)); // 生成一个随机索引
            // 交换 array[i] 和 array[j] 的值
            [array[i], array[j]] = [array[j], array[i]];
        }
    }
    const names = [
        "刘友琼", "马鹏飞",
        "安然", "王泰", 
        "陈奇星", "薛静",
        "顾钦天", "李俊逸", 
        "朱长江", "王璇", "魏艳红", "郭俊辉", "施丽红", "张秉正"
    ];
    shuffleArray(names)
    for (let i = 1; i <= names.length; i++) {
        const today = new Date(); // 创建一个表示当前日期和时间的 Date 对象
        const weekNumber = Math.ceil((today - new Date(today.getFullYear(), 0, 1)) / (7 * 24 * 60 * 60 * 1000));  // 计算今天是一年中的第几周
        const randomName = names[i-1];
        document.getElementById(`weeknumber`).textContent = `2024年第${weekNumber}周组会汇报顺序`;
        document.getElementById(`number${i}`).textContent = `${i}: ${randomName}`;
    }
</script>