Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比率随机数_Javascript - Fatal编程技术网

Javascript 比率随机数

Javascript 比率随机数,javascript,Javascript,我想用自定义宽度随机化我的列表。为此,我编写了一个简单的JavaScript代码片段,生成介于1和之间的数字 功能如下: randomizePortfolio: function() { $('ul.works').children('li').each(function() { var Random = Math.floor(Math.random() * 2) + 1, words = 'normal'; if(Random =

我想用自定义宽度随机化我的列表。为此,我编写了一个简单的JavaScript代码片段,生成介于
1和
之间的数字

功能如下:

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;
var随机:
如果(Math.random()<.75)random=1;
else随机=2;

要获得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;
var随机:
如果(Math.random()<.75)random=1;
else随机=2;

我正在使用的另一种方式,可以让您满意:

//这是我们想要通过比率得到的值(其中v是值,r是比率)
//r是一个具有最小值和最大值的数组,此示例基于100%的比率
常数比值=[
{v:1,r:[0,75]},//75%的几率获得1
{v:2,r:[76100]}//25%的几率获得2分
];
//实际函数来获取我们的值
函数getRandByRatio(比率值){
//idx是介于0和100之间的随机整数
设idx=Math.floor(Math.random()*(100+1));
用于(比率值的let项){
//测试idx是否在r范围内

如果(idx>=item.r[0]&&idx我正在使用的另一种方式,这可能会让您满意:

//这是我们想要通过比率得到的值(其中v是值,r是比率)
//r是一个具有最小值和最大值的数组,此示例基于100%的比率
常数比值=[
{v:1,r:[0,75]},//75%的几率获得1
{v:2,r:[76100]}//25%的几率获得2分
];
//实际函数来获取我们的值
函数getRandByRatio(比率值){
//idx是介于0和100之间的随机整数
设idx=Math.floor(Math.random()*(100+1));
用于(比率值的let项){
//测试idx是否在r范围内

如果(idx>=item.r[0]&&idx谢谢,效果很好。但是现在我有另一个问题-我连续得到两个
2
。有没有想法防止这种情况发生?如果你不想发生这种情况,请检查前一个数字是否为2,如果是,则返回1。否则,得到2的概率是25%,与前一个数字无关。这不是第二个简单来说:)如果我没有在一行中得到两个
2
s,我会得到类似
211
的东西,这也是一个问题(因为行只有4个元素宽)。如果我开始同时使用上一个和下一个,恐怕根本就不会有
2
。你到底想实现什么?如果你要生成随机数,为什么不得到任何2是一个问题?让我在这里演示一下:你看,行应该有最多四个
1
。当我随机化它时,有时它工作得很好,有时就像截图显示一样。有趣的是,我尝试使用砖石结构,但它对这一点都没有帮助;)谢谢,效果很好。但现在我有另一个问题-我连续得到两个
2
。有没有想法防止这种情况发生?如果你不想发生这种情况,请检查前一个数字是否为2,如果是,则返回1。否则,得到2的概率是25%,与前一个数字无关。这并不容易:)如果我没有在一行中得到两个
2
s,我会得到类似
211
的东西,这也是一个问题(因为行只有4个元素宽)。如果我开始同时使用上一个和下一个,恐怕根本就不会有
2
。你到底想实现什么?如果你要生成随机数,为什么不得到任何2是一个问题?让我在这里演示一下:你看,行应该有最多四个
1
。当我随机化它时,有时它工作得很好,有时就像截图显示一样。有趣的是,我尝试使用砖石结构,但它对这一点都没有帮助;)