生成随机组合句子时,JavaScript中Math.random的最佳放置位置?
随机混合数组生成句子的实现方案
需求回顾
- 已完成:从三个数组按索引一一配对生成10句句子
- 待实现:用
Math.random()随机混合三个数组中的单词生成新句子,允许单词重复使用
实现位置说明
你需要把Math.random()的调用放在for循环的内部,每次循环时为三个数组分别生成随机索引,替换原来固定使用的循环变量i。这样每一次生成句子时,都会从三个数组里随机挑选元素,而非按固定索引配对。
修改后的代码
let substantiv = ['Daddy', 'Jag', 'Hästen', 'Mamma', 'Glaset', 'Gameboy', 'Pelle','Blondie', 'Sängen', 'Bilen'] let verb = ['cyklar', 'rider', 'bakar', 'springer', 'hoppar', 'äter', 'dricker', 'går', 'läser', 'sover'] let adj = ['bra', 'dåligt', 'roligt', 'inte', 'alltid', 'på Söndag', 'aldrig', 'imorgon', 'idag', 'snabbt'] let cont = document.createElement('div') document.body.append(cont) for(let i=0; i<10; i++){ const el1 = document.createElement('div') // 为每个数组生成随机索引 const randSub = Math.floor(Math.random() * substantiv.length) const randVerb = Math.floor(Math.random() * verb.length) const randAdj = Math.floor(Math.random() * adj.length) el1.textContent = `${substantiv[randSub]} ${verb[randVerb]} ${adj[randAdj]}` cont.append(el1) }
代码解释
Math.random()生成0到1之间的随机小数,乘以数组长度后得到0到数组长度(不含)的随机数,再用Math.floor()取整,就能得到合法的数组索引。- 把随机索引的生成放在循环内部,确保每一次循环都会生成全新的随机组合,满足“允许重复使用单词”的要求。
内容的提问来源于stack exchange,提问作者tocajossan
相关产品推荐
相关产品推荐

