带比率的随机数
Random numbers with ratio
我想用自定义宽度随机化我的列表。为此,我编写了简单的JavaScript片段,在1 and 2
之间生成数字。
功能如下:
randomizePortfolio: function() {
$('ul.works').children('li').each(function() {
var Random = Math.floor(Math.random() * 2) + 1,
words = 'normal';
if(Random == '2') {
words = 'wide';
}
$(this).addClass('col-md-'+3*Random+' col-sm-'+3*Random+' '+words);
});
$('ul.works').masonry({
itemSelector: 'li'
});
}
问题是,我想为1
提供更大的比率。现在它 - 不知不觉 - 随机,所以有时我得到所有的2
,其他时间 - 所有1
的。我怎样才能为此添加比率(假设 3:1)?
要获得 3:1 分布,您可以使用所需的数字创建一个数组,并添加三个 1 和一个 2,然后随机化索引:
var rvalues = [1,1,1,2];
var Random = rvalues[Math.floor(Math.random() * rvalues.length)];
这是另一种等效的方法,该方法基于随机值小于 3/4 的时间 3/4 的事实:
var Random:
if (Math.random() < .75) Random = 1;
else Random = 2;
我
正在使用的另一种方式,可以为您服务:
// here's the value we wanna get by ratio (where v is value and r is ratio)
// r is an array with min and max value, this example is based on a 100% ratio
const ratioValues = [
{v: 1, r: [0,75]}, // 75% chance to get 1
{v: 2, r: [76,100]} // 25% chance to get 2
];
//actual function to get our value
function getRandByRatio(ratioValues) {
// idx is a random integer between 0 and 100
let idx = Math.floor(Math.random() * (100 + 1));
for (let item of ratioValues) {
// test if idx is within the r range
if (idx >= item.r[0] && idx <= item.r[1]) {
//if it is return our value
return item.v;
}
}
};
// let's make a testing function
function makeTest(nb) {
const ul = document.getElementById("rand-value");
for (let i = 0; i < nb; i++) {
ul.innerHTML += "<li>" + getRandByRatio(ratioValues) + "</li>";
}
};
makeTest(10);
<ul id="rand-value"></ul>
虽然只有 2 个值可能有很多代码,但我发现它更具可读性且更易于维护。(当你有更多的价值时,这很棒!!)
希望这对某人有用!! :)
相关文章:
- 如何在javascript中获得与特定数字相等的随机数
- Javascript动态变量(添加了随机数)
- 在javascript中添加和显示对象的随机数组中的视频
- 设置随机数,然后每5秒随机减少一次,直到达到0(javascript)
- 生成随机数10次
- 选择随机数组元素并放置到另一个数组中
- 正确使用AES-CTR模式的随机数和计数器
- java中具有长种子值的随机数生成器
- 什么'这个随机数猜谜游戏错了
- 3种对象,随机数组javascript
- 带有 JavaScript 随机数函数的未知问题
- 在JavaScript中生成和检查随机数
- Javascript 随机数组
- 一种从随机数的序列中查找值的简单算法
- 用不重复的随机数填充数组
- 在HTML中创建随机数生成器
- 在 JavaScript 中获取范围的随机数的最佳方法
- 在数组中生成随机数,没有任何重复的数字
- JavaScript 使用随机数组
- 带比率的随机数