打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

用户:RedDragon/Test2:修订间差异

来自Rizline中文维基
RedDragon
RedDragon留言 | 贡献 (重写随机模块,增加详细权重分配)
第193行: 第193行:


     function generateRandomRestrictions() {
     function generateRandomRestrictions() {
        //  流速选项
         var speeds = Array(40).fill("无限制").concat(Array.from({ length: 91 }, function (_, i) { return (i + 10) / 10 }))
         var speeds = Array(40).fill("无限制").concat(Array.from({ length: 91 }, function (_, i) { return (i + 10) / 10 }))
         var mods = ["无MOD", "无MOD", "无MOD", "镜像模式", "保护模式", "Bad保护模式", "特殊计量条", "隐藏计量条"]
         // 随机流速
         var others = ["无限制", "无限制", "无限制", "静音", "单手", "手持", "Bad比Hit多", "Combo低于50"]
         document.getElementById('speed-data').textContent = speeds[Math.floor(Math.random() * speeds.length)]


        // 随机难度
         document.getElementById('difficulty-data').innerHTML = window.difficultyArray[Math.floor(Math.random() * window.difficultyArray.length)]
         document.getElementById('difficulty-data').innerHTML = window.difficultyArray[Math.floor(Math.random() * window.difficultyArray.length)]
        document.getElementById('speed-data').textContent = speeds[Math.floor(Math.random() * speeds.length)]


         var selectedMods = []
        // MOD权重配置
         if (Math.random() < 0.3) {  // 只随机一个mod条件的概率
         var modOptions = [
            selectedMods = [mods[Math.floor(Math.random() * mods.length)]]
            { name: "无MOD", weight: 4 },
        } else {
            { name: "镜像模式", weight: 1 },
             var availableMods = mods.filter(function (m) { return m !== "无MOD" })
            { name: "保护模式", weight: 1 },
             var shuffled = availableMods.slice().sort(function () { return Math.random() - 0.5 })
            { name: "Bad保护模式", weight: 1 },
             var count = Math.floor(Math.random() * 3) + 2
            { name: "特殊计量条", weight: 1 },
             selectedMods = shuffled.slice(0, Math.min(count, availableMods.length))
            { name: "隐藏计量条", weight: 1 }
        ]
 
         // 其他限制权重配置
        var otherOptions = [
            { name: "无限制", weight: 6 },
            { name: "静音", weight: 1 },
            { name: "单手", weight: 1 },
            { name: "手持", weight: 1 },
            { name: "Bad数比Hit数多", weight: 1 },
             { name: "Combo低于50", weight: 1 },
             { name: "全拆打法", weight: 1 },
             { name: "全换打法", weight: 1 },
             { name: "禁止出张", weight: 1 }
        ]
 
        // 随机MOD
        var selectedMods = selectWeightedItems(modOptions, 0.3, "无MOD")


            var hasSpecial = selectedMods.includes("特殊计量条")
        // 特殊计量条处理
            if (hasSpecial) {
        var hasSpecial = selectedMods.includes("特殊计量条")
                var specialRates = ["特殊计量条100%", "特殊计量条110%", "特殊计量条120%"]
        if (hasSpecial) {
                selectedMods = selectedMods.filter(function (m) { return m !== "特殊计量条" })
            var specialRates = ["特殊计量条100%", "特殊计量条110%", "特殊计量条120%"]
                selectedMods.push(specialRates[Math.floor(Math.random() * specialRates.length)])
            selectedMods = selectedMods.filter(function (m) { return m !== "特殊计量条" })
            }
            selectedMods.push(specialRates[Math.floor(Math.random() * specialRates.length)])
         }
         }


         var modElement = document.getElementById('mod-data')
        // 随机其他限制
         if (selectedMods.length === 1) {
         var selectedOthers = selectWeightedItems(otherOptions, 0.8, "无限制")
             modElement.textContent = selectedMods[0]
 
        updateRestrictionElement('mod-data', selectedMods)
        updateRestrictionElement('other-data', selectedOthers)
    }
 
    // 加权随机选择函数
    // options: 选项数组
    // singleProbability: 只选择一个项的概率
    // excludeItem: 选择多个时要排除的项
    function selectWeightedItems(options, singleProbability, excludeItem) {
        var selectedItems = []
 
         if (Math.random() < singleProbability) {
            var weightedOptions = []
            for (var i = 0; i < options.length; i++) {
                for (var j = 0; j < options[i].weight; j++) {
                    weightedOptions.push(options[i].name)
                }
            }
             selectedItems = [weightedOptions[Math.floor(Math.random() * weightedOptions.length)]]
         } else {
         } else {
             modElement.innerHTML = '<p>' + selectedMods.join('<br>') + '</p>'
             var availableOptions = options.filter(function (opt) { return opt.name !== excludeItem })
            var shuffled = availableOptions.slice().sort(function () { return Math.random() - 0.5 })
            var count = Math.floor(Math.random() * 3) + 2  // 2-4个项
            selectedItems = shuffled.slice(0, Math.min(count, availableOptions.length)).map(function (opt) { return opt.name })
         }
         }


        var selectedOthers = []
         if (selectedItems.includes(excludeItem)) {
         if (Math.random() < 0.8) { // 只随机一个其他条件的概率
             selectedItems = [excludeItem]
             selectedOthers = [others[Math.floor(Math.random() * others.length)]]
        } else {
            var availableOthers = others.filter(function (o) { return o !== "无限制" })
            var shuffledOthers = availableOthers.slice().sort(function () { return Math.random() - 0.5 })
            var otherCount = Math.floor(Math.random() * 2) + 2
            selectedOthers = shuffledOthers.slice(0, Math.min(otherCount, availableOthers.length))
         }
         }


         var otherElement = document.getElementById('other-data')
        return selectedItems
         if (selectedOthers.length === 1) {
    }
             otherElement.textContent = selectedOthers[0]
 
    function updateRestrictionElement(elementId, items) {
         var element = document.getElementById(elementId)
         if (items.length === 1) {
             element.textContent = items[0]
         } else {
         } else {
             otherElement.innerHTML = '<p>' + selectedOthers.join('<br>') + '</p>'
             element.innerHTML = '<p>' + items.join('<br>') + '</p>'
         }
         }
     }
     }
第259行: 第297行:
神秘的随机挑战!
神秘的随机挑战!


Ver.1.1
Ver.1.2


<pre>
<pre>

2025年10月21日 (二) 01:17的版本

曲目
限制
难度 a
流速 b
MOD c
其他 d

神秘的随机挑战!

Ver.1.2

{{Infobox
|name = 随机挑战
|title = 曲目
|titlestyle = background:#ccc
|image = [[File:插画图标.png|100px]]
|imagestyle =
|headerstyle = background:#ccf
|labelstyle = background:#ddf

|header1 = 限制
|label2 = 难度
|data2 = a
|label3 = 流速
|data3 = b
|label4 = MOD
|data4 = c
|label5 = 其他
|data5 = d
|data5 = d

}}

User:RedDragon/Test User:RedDragon/Test1 User:RedDragon/Test2