Javascript 用「;“数学随机”;有时从数组中选择重复项

Javascript 用「;“数学随机”;有时从数组中选择重复项,javascript,node.js,random,discord.js,Javascript,Node.js,Random,Discord.js,我试图将语音频道中的项目随机分配给消息内容中的项目。但它又选择了同一个人。我怎样才能防止这种情况?用户也喜欢这样,因为他们不知道discord.js ppl 示例=用户=[“222222”,“211111112”] 让用户=message.member.voiceChannel.members .filter(y=>y.user.id!==message.author.id) .map(a=>a.user.id); 对于(变量i=0;i

我试图将语音频道中的项目随机分配给消息内容中的项目。但它又选择了同一个人。我怎样才能防止这种情况?用户也喜欢这样,因为他们不知道discord.js ppl 示例=用户=[“222222”,“211111112”]

让用户=message.member.voiceChannel.members
.filter(y=>y.user.id!==message.author.id)
.map(a=>a.user.id);
对于(变量i=0;i
在您的示例中,“num”是什么

以下措施肯定会奏效:

var user = users[Math.floor(Math.random() * users.length)];

有两种随机选择方法,“滚动”和“交易”。掷骰子可以多次获得相同的值,就像掷骰子一样。交易获得不同的价值,如在交易卡中

你用的是滚轴。你需要交易。您需要在选择每个值时将其从进一步考虑中删除

假设您已经填充了
用户
数组,现在您想从中处理
num
值。要执行此操作,请在选择时从阵列中删除每个项目。这是我的工作

for(设i=0;i如果(users.length也num=parseInt,在消息内容消息中,如下所示;1Banana 3应用数组中有多少用户。分配的
num
在哪里?是否应改用随机算法?Math.random()给出介于0和1之间的浮点值,可能应将其乘以1000(例如),并通过用户数对其进行模化…因此此命令如下;!randomrole 1Banana 3应用“num=parseInt in message content”和用户数组不总是相同,其变化直到相同。让num=parseInt(x);x=消息内容对于单个选项来说这很好。当您想要随机洗牌输入时,它会失败。另请参阅Fischer-Yates洗牌的解释,例如。
var user = users[Math.floor(Math.random() * users.length)];
for (let i = 0; i < num; i++) {
  if (users.length <= 0) break
  const randex = Math.floor(Math.random() * users.length)
  const user = users.splice(randex, 1)[0]
  /* do what you want with this user */
}
(function deal (k, n) {
  function range1(i){return i?range1(i-1).concat(i):[]}
  const users = range1(n)
  for (let i = 0; i < k; i++) {
    if (users.length <= 0) break
    const randex = Math.floor(Math.random() * users.length)
    const user = users.splice(randex, 1)[0]
    console.log (user)
  }
})(7, 52)