我知道你可以使用这个函数在一个范围内的JavaScript中生成一个随机数:
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
Run Code Online (Sandbox Code Playgroud)
感谢IonuţG.Stan 在这里.
我想知道的是你是否可以使用crypto.getRandomValues()而不是Math.random()在一个范围内生成一个更好的随机数.我希望能够生成0到10之间的数字,或0到1,甚至10 - 5000(含).
你会注意到Math.random()产生一个如下数字:0.8565239671015732.
getRandomValues API可能会返回以下内容:
Uint8Array(1)Uint16Array(1)Uint32Array(1).那么如何将其转换回十进制数,以便我可以使用上面相同的范围算法?或者我需要一个新的算法?
这是我尝试的代码,但它不能很好地工作.
function getRandomInt(min, max) {
// Create byte array and fill with 1 random number
var byteArray = new Uint8Array(1);
window.crypto.getRandomValues(byteArray);
// Convert to decimal
var randomNum = '0.' + byteArray[0].toString();
// Get number in range …Run Code Online (Sandbox Code Playgroud) 我正在使用 chart.js v.2。库,当用户将鼠标悬停在图表点上时,我试图将光标样式更改为“指针”。(我将把它用于条形图、饼图、折线图)。似乎 charts.js v.2 中应该支持此选项。但我在任何地方都找不到例子。
编辑:我没有提到我使用的是带有反应的图表,更具体地说,我正在使用这个反应包装器。
我正在导入例如图表线 import { Line } from 'react-chartjs-2';
class ChartTimelineChart extends Component {
constructor(props){
super(props);
this.options = {
responsive: true,
maintainAspectRatio: false,
animation: {
easing: 'easeOutCirc',
duration: 1000
},
pointStyle : 'circle',
scales: {
xAxes: [{
display: true,
gridLines: {display: false},
scaleLabel: {display: true}
}],
yAxes: [{
display: true,
gridLines: {display: false},
ticks: {beginAtZero:true},
scaleLabel: {display: true}
}]
},
tooltips: {
displayColors: false
},
legend: false
};
searchChart(elem, props, data) {
//Something... …Run Code Online (Sandbox Code Playgroud) 我一直在尝试创建一个函数,它将通过函数返回0(包括)和1(不包括)之间的随机十进制数Window.crypto.getRandomValues().目前,我的代码如下:
var rand = function(){
var ra = window.crypto.getRandomValues(new Uint32Array(1))[0];
function dec(n,m){
return (n>=0&&n<=1)?n:dec(n/m,m);
}
return dec(ra,8);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是这不是均匀分布的; 它倾向于在.2和.7之间,很少在.2和.7之间.有没有更好的方法来使用该.getRandomValues()方法来获得类似Math.random()函数的数字?
我没有使用该.random()方法,因为我希望为我正在尝试执行的操作设置安全数字.