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

标签 javascript jquery math random probability

使用JavaScriptjQuery,我尝试创建一个依赖于概率字符串生成器。 例如,如果我第一次生成“医生”,则不会出现其他“医生”。它将转到另一个 url,例如“pimp”。一旦使用了所有字符串名称,它将再次生成一个完全随机的名称,直到接下来的6个没有重复,依此类推。

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

$("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>

任何想法,甚至是实现依赖概率的一步,都是我很乐意接受的答案。提前致谢!

最佳答案

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

关于javascript - 生成具有相关概率的随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50500132/

相关文章:

jquery - 使用 Jquery 更改按钮单击时的显示属性

math - 如何确定一组平行线中最外面的线?

javascript - 如何获取 HTML 格式的当前日期和时间并对其进行格式化?

javascript - 根据id标签动态添加图片

javascript - jquery mobile pageinit 没有看到 div

jquery - jQuery Next/Prev平滑滚动和Wordpress?

javascript - 接受任意 2 个输入并在 JS onChange 中的第三个输入中显示结果

c - 获得一个数字的所有倍数的更快方法?

javascript - 在不创建 CORS 限制的情况下将 HTML 插入 Canvas

javascript - 预览图像并在上传之前对其进行裁剪