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

时间:2018-05-24 02:40:39

标签: javascript jquery math random probability

使用JavaScriptjQuery,我正在尝试创建一个依赖于依赖string的{​​{1}}生成器。 例如,如果我第一次生成“医生”,就不会出现其他“医生”。它会转到另一个probability,就像“皮条客”一样。一旦使用了所有url名称,它将再次生成一个完全随机的名称,直到接下来的6名没有重复,依此类推。

对于上下文,这是我迄今为止的string独立概率(只是随机字符串):

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>的一步,都是我很乐意接受的答案。提前谢谢!

1 个答案:

答案 0 :(得分:1)

尝试在拾取时从数组中删除随机选择的项目,如果数组的长度为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>