如何使用替换函数 javascript 生成随机数? [复制]

Posted

技术标签:

【中文标题】如何使用替换函数 javascript 生成随机数? [复制]【英文标题】:how can i generate randome number using replace function javascript? [duplicate] 【发布时间】:2021-09-12 11:46:03 【问题描述】:

我是 javascript 新手,我需要使用替换生成随机数,我可以尝试

function generateUUID() 
    var dt = new Date().getTime()
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace('/[xy]/g', function (c) 
        var r = (dt + Math.random() * 16) % 16 | 0
        dt = Math.floor(dt / 16)
        return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16)
    )
    return uuid

这个函数总是返回xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx 我错过了什么?

【问题讨论】:

字符串'/[xy]/g'是否存在?不...你想要一个正则表达式.../[xy]/g 正确使用正则表达式格式/[xy]/g而不是'/[xy]/g' 【参考方案1】:

您在替换函数中使用字符串而不是正则表达式,这应该是一个简单的修复,例如换个方式

.replace('/[xy]/g',

.replace(/[xy]/g,

function generateUUID() 
    var dt = new Date().getTime()
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) 
        var r = (dt + Math.random() * 16) % 16 | 0
        dt = Math.floor(dt / 16)
        return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16)
    )
    console.log("uuid",uuid)
    return uuid


console.log(generateUUID())

我还建议为此目的查看第三方库,例如 uuid,它使用加密强随机值。

function generateUUID() 
    return uuid.v4();

console.log(generateUUID());
<script src="https://cdnjs.cloudflare.com/ajax/libs/uuid/8.3.2/uuid.min.js" integrity="sha512-UNM1njAgOFUa74Z0bADwAq8gbTcqZC8Ej4xPSzpnh0l6KMevwvkBvbldF9uR++qKeJ+MOZHRjV1HZjoRvjDfNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

【讨论】:

感谢@Terry Lennox 没问题,很高兴能为您提供帮助!

以上是关于如何使用替换函数 javascript 生成随机数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个对 Javascript 中先前函数生成的内容作出反应的函数

如何根据概率密度函数产生随机数

需要一个JavaScript代码,生成1--100之间的随机数一共一百个,每行显示10个数字,而且这

Javascript:生成具有固定均值和标准差的随机数

如何使用 JavaScript 生成一个固定长度的随机数?

JMeter 如何生成指定取值范围指定小数位数的随机浮点数