生成具有相关概率的随机字符串

Generate Random String with Dependent Probability

使用 JavaScriptjQuery,我正在尝试创建一个依赖 probabilitystring 生成器。 例如,如果我第一次生成 "doctor",则不会出现其他 "doctors"。它会转到另一个 url,例如 "pimp"。一旦所有 string 个名称都被使用,它将再次生成一个完全随机的名称,直到接下来的 6 个没有重复,依此类推。

对于上下文,这里是code我到目前为止的独立概率(只是随机字符串):

$("button").click(function() {
  var urls = [
    "mafia",
    "doctor",
    "cupid",
    "mafioso",
    "pimp",
    "detective"
  ];

  var url = urls[Math.floor(Math.random() * urls.length)];
  $("#log").append(url + "<br>"); // append url to log
 
 var last = $("#log").split("<br>").pop(); // get last part
  var text = urls.replace(last, ""); // replace in the array, hopefully
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button>Generate</button><br>
<div id="log"></div>

任何想法,甚至是实现依赖 probability 的步骤,我都会欣然接受。提前致谢!

尝试在拾取时从数组中删除随机选择的项目,如果数组的长度为0,则将其重置为原始数组:

var origURLs = [
  "mafia",
  "doctor",
  "cupid",
  "mafioso",
  "pimp",
  "detective"
];
var currURLs;
$("button").click(function() {
  if (!currURLs || currURLs.length === 0) currURLs = [...origURLs];
  const randIndex = Math.floor(Math.random() * currURLs.length);
  const url = currURLs.splice(randIndex, 1)[0];
  $("#log").append(url + "<br>");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Generate</button><br>
<div id="log"></div>