Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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_Discord - Fatal编程技术网

不一致-从javascript中的列表中选择

不一致-从javascript中的列表中选择,javascript,discord,Javascript,Discord,我在制造一个不和机器人。我有一个命令叫爱。我希望它从列表中随机选取一个报价,但我不确定如何做到这一点。 以下是我到目前为止的情况: if (message.content === config.prefix + "love" ) { message.reply(LoveRnd()); } function LoveRnd(){ var items = items["test1","test2","test3"]; var rnd = math.floor(Math.ra

我在制造一个不和机器人。我有一个命令叫爱。我希望它从列表中随机选取一个报价,但我不确定如何做到这一点。 以下是我到目前为止的情况:

if (message.content === config.prefix + "love" ) {
    message.reply(LoveRnd());
}

function LoveRnd(){
    var items = items["test1","test2","test3"];
    var rnd = math.floor(Math.random()*items.length);
    var output = items[rnd];
    return output;
}

有一个从可用列表中选择随机索引的函数

    var globalIndex = 1;
    function pickRandom(index, min, max) {
       return (index * 7 % (max - min + 1);
    }

    function chooseRandomQuote(quotes) {
       return quotes[pickRandom(globalIndex++, 0, quotes.length)];
    }
pickRandom()函数将始终生成介于0和quotes.length之间的数字。e、 g.您可以尝试globalIndex=30,然后pickRandom()将生成0到10(引号长度)的数字,即210%11=1

编辑: 我只是让globalIndex不容易预测

var prime1 = 7;
 var prime2 = 23;
 var globalIndex = prime2;

 function pickRandom(min, max) {

      var randNum = ((globalIndex * prime1) % (max - min + 1));
      globalIndex = prime2 * randNum;
      return randNum;
  }

 function chooseRandomQuote(quotes) {
     return quotes[pickRandom(0, quotes.length)];
 }
您可以在这里选择任意两个素数prime1和prime2


供参考:

有一个函数,可以从可用列表中选择一个随机索引

    var globalIndex = 1;
    function pickRandom(index, min, max) {
       return (index * 7 % (max - min + 1);
    }

    function chooseRandomQuote(quotes) {
       return quotes[pickRandom(globalIndex++, 0, quotes.length)];
    }
pickRandom()函数将始终生成介于0和quotes.length之间的数字。e、 g.您可以尝试globalIndex=30,然后pickRandom()将生成0到10(引号长度)的数字,即210%11=1

编辑: 我只是让globalIndex不容易预测

var prime1 = 7;
 var prime2 = 23;
 var globalIndex = prime2;

 function pickRandom(min, max) {

      var randNum = ((globalIndex * prime1) % (max - min + 1));
      globalIndex = prime2 * randNum;
      return randNum;
  }

 function chooseRandomQuote(quotes) {
     return quotes[pickRandom(0, quotes.length)];
 }
您可以在这里选择任意两个素数prime1和prime2


作为参考:

这就是你想要的吗?我刚纠正了几个拼写错误

function LoveRnd(){
  var items = ["test1","test2","test3"];
  var rnd = Math.floor(Math.random()*items.length);
  var output = items[rnd];
  return output;
}

这就是你想要的吗?我刚纠正了几个拼写错误

function LoveRnd(){
  var items = ["test1","test2","test3"];
  var rnd = Math.floor(Math.random()*items.length);
  var output = items[rnd];
  return output;
}

好吧,这就是你要做的:

创建引号数组:

const quotes = ["test1","test2","test3"]
现在让我们来看一下您的功能:

const loveRnd = () => quotes[Math.floor(Math.random() * quotes.length)]
那么我们在做什么

我们将一个随机数(Math.random())乘以引号数组的长度,并将其放大,以便返回的值不大于数组的索引


这个函数从上面定义的引号数组中给出一个随机值。

好吧,这就是你要做的:

创建引号数组:

const quotes = ["test1","test2","test3"]
现在让我们来看一下您的功能:

const loveRnd = () => quotes[Math.floor(Math.random() * quotes.length)]
那么我们在做什么

我们将一个随机数(Math.random())乘以引号数组的长度,并将其放大,以便返回的值不大于数组的索引

此函数从上面定义的引号数组中给出一个随机值。

试试这个:

function LoveRnd(){
    var items = ["test1","test2","test3"];
    var rnd = Math.floor(Math.random()*items.length);
    var output = items[rnd];
    return output;
}
你的第一次数学考砸了 而且您的列表不需要第二个“项目”

试试这个:

function LoveRnd(){
    var items = ["test1","test2","test3"];
    var rnd = Math.floor(Math.random()*items.length);
    var output = items[rnd];
    return output;
}
你的第一次数学考砸了
您的列表不需要第二个“项”

?检查我的答案。?检查我的答案。对于您的示例,请在函数LoveRnd()中使用以下内容:{var items=items[“test1”、“test2”、“test3”];return chooseRandomQuote(items);}这不会选择随机索引。它选择一个索引。如果
chooseRandomQuote
是唯一使用
globalIndex
的函数,则有一个定义良好且可预测的引号返回顺序。您可以使用Math.random()选择globalIndex。我使用了这个变量,并将其递增1作为一个例子。您将方法命名为“pickRandom”,即使它不是随机拾取的-给定相同的输入,重复调用函数永远不会产生不同的答案。这是一个坏名字的方法。你是对的。我的错。我刚刚做了一些更正,请看一下。这可能会有所帮助。对于您的示例,在函数LoveRnd()中使用以下内容{var items=items[“test1”、“test2”、“test3”];返回chooseRandomQuote(items);}这不会选择随机索引。它选择一个索引。如果
chooseRandomQuote
是唯一使用
globalIndex
的函数,则有一个定义良好且可预测的引号返回顺序。您可以使用Math.random()选择globalIndex。我使用了这个变量,并将其递增1作为一个例子。您将方法命名为“pickRandom”,即使它不是随机拾取的-给定相同的输入,重复调用函数永远不会产生不同的答案。这是一个坏名字的方法。你是对的。我的错。我刚刚做了一些更正,请看一下。这可能会有帮助。