Javascript 生成256位随机数

Javascript 生成256位随机数,javascript,random,numbers,bigint,Javascript,Random,Numbers,Bigint,我需要生成一个256位随机无符号数作为十进制字符串(与前面生成的任何内容发生冲突的概率几乎为零) 如何在JavaScript(浏览器)中执行此操作?此代码使用循环生成256个字符长的随机二进制数字字符串,然后将其转换为BigInt。然后,如果您愿意,您可以将其转换为字符串,或者其他任何您喜欢的内容 var-temp='0b'; for(设i=0;io+('00'+v.toString(16)).slice(-2),''; //将十六进制值转换为十进制字符串 返回BigInt('0x'+字节十六进

我需要生成一个256位随机无符号数作为十进制字符串(与前面生成的任何内容发生冲突的概率几乎为零)


如何在JavaScript(浏览器)中执行此操作?

此代码使用循环生成256个字符长的随机二进制数字字符串,然后将其转换为
BigInt
。然后,如果您愿意,您可以将其转换为字符串,或者其他任何您喜欢的内容

var-temp='0b';
for(设i=0;i<256;i++){
temp+=Math.round(Math.random());
}
常数randomNum=BigInt(temp);
log(randomNum.toString());

如果不受限制,您可以使用新的JavaScript工具:

函数rnd256(){
const bytes=新的Uint8Array(32);
//将加密随机字节加载到数组中
window.crypto.getRandomValue(字节);
//将字节数组转换为十六进制表示
const bytesHex=bytes.reduce((o,v)=>o+('00'+v.toString(16)).slice(-2),'';
//将十六进制值转换为十进制字符串
返回BigInt('0x'+字节十六进制).toString(10);
}

log(rnd256())
你试过什么,它到底有什么问题?@jornsharpe我试过
Math.random()
但它生成的随机位太少了。我也不确定
Math.random()
是否在所有流行浏览器中都是可靠的种子。是128位的,基本上适合任何用例。将位数加倍几乎肯定是过火了,只会产生错误的安全感(此时实现错误的可能性已经远远大于实际的随机冲突)。JavaScript数是双倍的,64位浮点,因此如果您真的想要256位,则必须选择4位。“可靠的种子”是什么意思?@porton-关于您的用例的更多信息会有所帮助。有时,您会发现核心问题是设计,可以用更好的方式解决。仅根据您的评论,我可以假设您希望从浏览器生成一些唯一的编号!一般来说,你不能依赖浏览器,任何浏览器都可以用它做任何事情,任何初级程序员都可以改变生成逻辑,如果他/她愿意的话。。。但是我只是假设了很多,因为我不知道上下文,你提供的很少…”“删除代码运行程序,因为stackoverflow不会运行它”--它实际上运行得很好,并将输出打印到临时控制台。
Math.random
不能保证是加密安全的随机数生成器(在大多数现代浏览器上并不可怕)。使用
crypto
API更适合此用例。@VisioN code runner在只有Javascript时对我不起作用。我只看到它在有HTML、CSS和Javascript时才起作用