比如说,如果我想在min和之间生成一个无偏的随机数max,我会这样做:
var rand = function(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
};
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要的生成之间的随机数min,并max更偏向价值N之间min并max在一定程度上D?最好用概率曲线来说明它:

我正在尝试创建一个随机数生成器,在两个数字之间生成随机数.例如,假设我想生成一个介于4到10之间的随机数,我希望它能够从4到10中选择任意数字.这是我尝试过的:
var randNumMin = 4;
var randNumMax = 10;
var randInt = (Math.floor(Math.random() * (randNumMax - randNumMin + 1)) + randNumMin);
Run Code Online (Sandbox Code Playgroud)
然而,这似乎不起作用,并产生了不在4到10之间的奇怪随机数,有些从0开始.这样做的正确算法是什么?
这是我正在实现该算法的代码:
$(function() {
$('#generateRandNums').click(function() {
var numCount = document.getElementById("randNumCount").value;
var randNumMin = document.getElementById("randNumMin").value;
var randNumMax = document.getElementById("randNumMax").value;
if (numCount.match(/^[\d]*$/ ) && randNumMin.match(/^[\d]*$/ ) && randNumMax.match(/^[\d]*$/ )) {
if (numCount == "" || randNumMin == "" || randNumMax == "") {
alert ("Please fill out all forms then try again.");
} else {
if (randNumMin>randNumMax) {
alert ("Please make …Run Code Online (Sandbox Code Playgroud) 我想在javascript中生成两个日期之间和两次之间的随机日期.例如,我想在今天和明天之间生成一个随机日期(上午8点到下午6点).我尝试了很多东西,但没有一个能够工作,所以我不会粘贴任何代码,因为它不起作用.有没有人做过类似的事情
function generateRandomDate(start, end) {
return new Date(start + Math.random() * (end - start));
}
Run Code Online (Sandbox Code Playgroud)
我用于生成随机日期的代码在上面发布
可能重复:
在特定范围内的Javascript中生成随机数?
我怎样才能得到一个随机值,例如,从-99到99,不包括0?
可能重复:
在Javascript中生成随机数
我有以下代码var randomnumber=Math.floor(Math.random()*101);为我生成1到100之间的随机数.我想要做的是生成-100到100之间的随机数.我不知道该怎么做.任何帮助,将不胜感激.
基本上我选择0-24之间的随机数:
Math.floor(Math.random() * myArray.length); // myArray contains 25 items
Run Code Online (Sandbox Code Playgroud)
让我们说它出现了8.现在我想得到0-24相同范围内的另一个数字,但这一次,我不想要一个8.下一次,我可能会滚动一个15.现在我想再次滚动但是我不想要8或15.我现在处理这个问题的方法是使用do while循环,如果数字相同,我只是重新滚动.
这是我家庭作业的一小部分,事实上,我已经努力满足所有要求,所以我想你可以说这是为了我个人的利益,所以我可以写得恰到好处,而不是最终的"每日wtf" ".
我知道你可以使用这个函数在一个范围内的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) 尝试搜索这个,但鉴于语法很难.有没有办法在LESS中生成一个随机数?我检查了文档并没有看到任何内容,但想知道是否有人知道一个技巧或无证的解决方案.
可能重复:
在特定范围内的Javascript中生成随机数?
有人可以告诉我如何使用Math.random()或javascript中的其他方式获得一位数随机数(1,2,3,..不是0.1,0.2,..或1.0,5.0,..)?
我写了这段代码,但是当我运行它时,我只得到一个空白页面.怎么了?看来我接近答案了.我已经尝试了一切,但它仍然无法正常工作.
class Button extends React.Component {
constructor(props) {
super(props);
this.state = {
random: 0
}
}
render() {
var min = 1;
var max = 100;
var rand = min + (Math.random() * (max-min));
handleClick() {
this.setState ({this.state.random + this.rand})
}
return (
<div>
<button value="Click me!" onClick={this.handleClick.bind(this)></button>
</div>
);
React.render(<Button />, document.querySelector('#container'));
}
}
Run Code Online (Sandbox Code Playgroud)
JSFIDLLE:https://jsfiddle.net/1cban4oy/12/
javascript ×9
random ×7
math ×2
numbers ×2
range ×2
algorithm ×1
cryptography ×1
css ×1
date ×1
digit ×1
ecmascript-6 ×1
less ×1
probability ×1
reactjs ×1