简单的问题,但我对这里的细微差别感兴趣.
我使用我自己提出的以下方法生成随机布尔值:
const rand = Boolean(Math.round(Math.random()));
Run Code Online (Sandbox Code Playgroud)
每当random()出现时,似乎总会有一个陷阱 - 它不是真正随机的,它会被某种东西或其他东西所破坏等等.所以,我想知道:
a)以上是最佳实践方法吗?
b)我是否在思考事物?
c)我是否解开了事情?
d)我不知道有更好/更快/更优雅的方式吗?
(如果B和C相互排斥,也有点兴趣.)
更新
如果它有所不同,我将其用于移动AI角色.
我正在使用 Javascript 生成wireguard 密钥对,但它是面向浏览器的,因此我删除了窗口对象,并且还有一个阻止创建私钥的问题。
问题是这行代码我无法在nodejs中运行:
function generatePresharedKey() {
var privateKey = new Uint8Array(32);
var crypto = require('crypto');
crypto.getRandomValues(privateKey);
return privateKey;
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误
crypto.getRandomValues(privateKey);
^
TypeError: crypto.getRandomValues is not a function
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用 require 调用 getRandomValues ,它会说找不到模块。 var getRandomValues = require('get-random-values');
我该如何导入它?npm install get-random-values 没有帮助。
有什么建议吗?
在这里小提琴:
function generatePresharedKey() {
var privateKey = new Uint8Array(32);
var crypto = require('crypto');
crypto.getRandomValues(privateKey);
return privateKey;
}
Run Code Online (Sandbox Code Playgroud)