用于随机打印的循环逻辑的nodejs

nodejs for loop logic for random print

我有一个 for 循环,在那个循环中我必须打印 160 条消息,每条消息打印 62 次,但是是随机的

喜欢:

消息 1 留言 6 留言178 消息 1 留言 3789 消息 1 ...

我想在 for 160 if 语句中使用

for(int i = 0; i<9920; i++){
  if(i<=62){
    print message
  }else if(i>63 && i<=124){
    print message
  }
....
}

但我不知道这是否是更好的解决方案,我也不知道如何使其随机化

有人可以帮助我吗?

很难理解你的问题。如果我正确地解析了你的文本,你想要的是将每条消息随机打印 62 次(而不是固定顺序)。

我正在使用 while 循环,这当然适用于任何循环结构。

let totalPrintedMessages = 0;
const printedMessageCount = {};
const messages = []; //["Message 1", "Message 2", "Message 3", "Message 4"];
for (let i = 1; i <= 10; i++) {
  messages.push("Message " + i);
}

while (true) {
  // once we're done printing each message(s) 62 times randomly
  if (totalPrintedMessages === messages.length * 62) break;

  //using a count variable is more efficent
  // if (isDone()) break;

  // picking a message randomly from the list & printing it
  const toPrint =
    messages[parseInt(Math.floor(Math.random() * messages.length))];
  // skipping if already printed 62 times
  if (printedMessageCount[toPrint] === 62) {
    continue;
  }
  totalPrintedMessages++;
  console.log(toPrint);

  // individual print count(s)
  if (!printedMessageCount[toPrint]) {
    printedMessageCount[toPrint] = 1;
  } else {
    printedMessageCount[toPrint]++;
  }

  // checking the current state of printed messages
  // console.log(printedMessageCount);
}

function isDone() {
  let printed = 0;
  for (let i = 0; i < messages.length; i++) {
    if (printedMessageCount[messages[i]] === 62) printed++;
  }
  return printed === messages.length;
}