不一致-从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”,即使它不是随机拾取的-给定相同的输入,重复调用函数永远不会产生不同的答案。这是一个坏名字的方法。你是对的。我的错。我刚刚做了一些更正,请看一下。这可能会有帮助。