Javascript随机化数组,而起始位置没有元素[重复]

2023-12-19

我有一个 JavaScript 问题。我让用户输入一个名称列表,然后将其放入一个数组中。长话短说,我正在编写一种随机方法,让人们弄清楚他们将为谁购买圣诞礼物。例如,原始数组由以下名称组成:

Alex
Joel
Lindsay
Cori

然后我想随机化名称,以便获得一个随机列表,类似于以下内容:

Lindsay
Cori
Joel
Alex

然后,我将显示第一个数组中的名称,并将它们与同一位置的随机名称对齐。例如,在该示例中,Alex与Lindsay相关联,Joel与Cori相关联,Lindsay与Joel相关联,并且Cori与Alex相关联。我目前正在使用以下随机方法:

function shuffle(array){
    var m = array.length, t, i;
    while(m){
        i = Math.floor(Math.random() * m--);
        t = array[m];
        array[m] = array[i];
        array[i] = t;
    }
    return array;
};

此函数的问题在于数组不会随机分配到新位置。例如,使用此方法,我可以得到以下初始数组:

Alex
Joel
Lindsay
Cori

我的数组,使用上面的函数对其进行随机化,将产生如下结果:

Cori
Alex
Lindsay
Joel

这意味着 Alex 与 Cori 关联,Joel 与 Alex 关联,Lindsay 与 Lindsay 关联,Cori 与 Joel 关联。这就是问题所在。如果这是一个查看谁为谁购买圣诞礼物的程序,则 Lindsay 不能为 Lindsay 购买礼物。

解决这个问题的合适的数组随机化函数是什么?

感谢您的帮助!!


Try --m, not m--:

function shuffle(array){
    var m = array.length, t, i;
    while(m){
        i = Math.floor(Math.random() * --m);
        t = array[m];
        array[m] = array[i];
        array[i] = t;
    }
    return array;
};

因为如果你使用m--你可能会得到i == m并将数组元素与其自身交换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript随机化数组,而起始位置没有元素[重复] 的相关文章

  • 如何从 javascript 错误对象读取错误消息

    有人可以帮我解决以下问题吗 我正在通过 redux 操作进行后调用 如下所示 export const addEmployee firstName surname contactNumber email gt async dispatch
  • 如何使传单圆圈标记可拖动?

    使用传单 我创建了一个L circleMarker我希望它是可拖动的 var marker L circleMarker new L LatLng 48 94603 2 25912 draggable true bindPopup Circ
  • 在 Cordova 中合并文件的多个部分

    在我的 Cordova 应用程序中 我正在下载任意文件 例如图像或视频文件 这是通过 Cordova 文件传输插件和 Range 标头完成的 因为我需要分段下载文件 我的问题是 我想将几 个小 字节 文件合并回原来的文件中 他们曾经在其中使
  • 由于 MIME 类型而导致资源被阻止?

    多年来我已经成功地包含动态创建的 javascript 文件 这是一个例子 https granadainfo com sups php locs 95 https granadainfo com sups php locs 95 正如你所
  • 个人 Tumblr 帖子上的 Javascript

    我知道您可以编辑在 tumblr 博客上呈现所有帖子博客主页的 html AngularJS 但是 有什么办法可以添加自定义到各个帖子 我想在逐个帖子的基础上做一些 javascript 的东西 但似乎无法找到可以编辑代码的位置 或者 如果
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • 纯 JS 相当于 Jquery eq()

    jquery 的纯等价物是什么eq 例如 我怎样才能实现 class1 class2 eq 0 text 1254 在纯 JavaScript 中 要获取数组中的元素索引 可以使用 在 JavaScript 中 因此 要重现您的代码 您可以
  • IndexError:索引 10 超出尺寸为 10 的轴 0 的范围

    我正在以数字方式为 x 网格和 x 向量以及时间网格设置网格 但我再次设置了一个数组x 位置 只能在 0 到 20 之间并且t 时间 将从 0 到 1000 以便求解热方程 但每次我想要 例如 我将步数设置为 10 时 都会收到错误 Tra
  • 使用 Firebase 控制台在 Firebase 中设置数组

    I am using Firebase console for preparing data for a demo app One of the data item is attendees Attendees is an array I
  • 使用 JavaScript 防止网页导航离开

    如何使用 JavaScript 防止网页导航离开 Using onunload允许您显示消息 但不会中断导航 因为为时已晚 然而 使用onbeforeunload将中断导航 window onbeforeunload function re
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • JQuery $.ajax() 在 java servlet 中发布数据

    我想将数据发送到 java servlet 进行处理 数据将具有可变长度并采用键 值对 A1984 1 A9873 5 A1674 2 A8724 1 A3574 3 A1165 5 数据不需要这样格式化 这就是我现在的方式 var sav
  • 检查浏览器空闲的替代方法

    我有一个简单的网络信息亭 在鼠标未使用 jQuery 移动 30 秒后显示用户操作提示 var i null body wrap mousemove function clearTimeout i overlay fadeOut i set
  • Javascript等待/异步执行顺序

    所以我试图把我的头脑集中在 Promise await async 上 我不明白为什么当 go 执行时 带有 finished 的警报会紧随 console log coffee 之后 当所有函数都使用等待 承诺时 为什么它只等待 getC
  • 如何使用 fetch() 和 WhatWG 流获取文件上传进度

    注意 我并不是在寻找任何替代方案 我知道这可以通过 XMLHttpRequest 来完成 我也不关心浏览器支持 我只想了解新的 即将推出的标准 我有一个File https developer mozilla org en US docs
  • 根据文本内容从 jquery 对象中过滤元素

    我正在尝试使用contains带有 this 关键字 但它给出了错误 JS function var check ul find li filter function return this contains two css color r
  • 如何将数据推送到嵌套对象

    如何将另一个元素推入variables来自以下对象的属性 var request name Name id 3 rules name Rule name tags tagId 1 variables variable var1 matchT
  • ‘state’未定义 no-undef

    我使用教程来学习 React 但我很快就陷入困境 在教程中 他们使用以下代码 import React Component from react class Counter extends Component state count 0 r
  • VS Code 扩展 - 获取完整路径

    我正在为 VS Code 编写一个插件 我需要知道调用扩展的文件的路径 无论是从编辑器上下文菜单或资源管理器上下文菜单调用还是用户只需键入扩展命令 function activate context get full path of the
  • Safari 扩展将消息发送到特定选项卡

    有没有办法从全局页面发送消息到特定选项卡 我目前正在做的是 在创建选项卡时 注入的脚本会创建一个唯一的 ID 并将包含该编号的消息发送到全局页面 并且全局页面会保存该编号 如果全局页面需要发送一些数据到一个tab 即 tab 3 然后全局页

随机推荐

  • Symfony webpack encore twig 功能不起作用

    我正在 Symfony 4 项目中使用 twig 生成静态 html 页面 我尝试使用简单的循环和 Twig 渲染函数同时生成多个页面 代码如下所示 foreach pages as page html this gt twig gt re
  • 如何访问 WordPress 身份验证令牌

    我们正在尝试使用 OAuth 2 0 将我们的网站链接到 Wordpresses API 希望客户能够从我们的网站进行身份验证并发布到 WordPress 我们需要接收访问令牌才能执行此操作 我们已成功连接 WordPress 以接收我们的
  • 设置类路径层次结构中的其他目录

    有两个目录 出租车 C a c 嗯 我在说目录中 c a b 当我执行 set classpath cd 时 目录 C a b 被分配给类路径变量 但我想将 C a c 分配给类路径 我怎样才能做到这一点 如果您需要将类路径设置为当前所在目
  • C++事件库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您能否推荐具有以下功能的轻量级跨平台事件记录 日志库 简单的界面 增量事件记录 即event 更新快
  • 更改notepad++中的注释字符

    我正在 notepad 中编辑 properties 文件 我可以使用 Cntrl K 切换块注释 但它会显示 代替 我修改 langs model xml 文件并替换 和 我重新启动了记事本 但它不起作用 有谁知道如何更改属性文件的记事本
  • onCreateOptionsMenu 何时在启用 ActionBar 的活动中发生?

    我知道菜单项将被设置为 ActionBar 中的操作图标 我想确切地知道这个 onCreateOptionsMenu 函数 它在 Activity 生命周期中何时调用 根据我的测试 即使在 onResume 之后也没有 该文档说明如下 pu
  • 如何将服务器生成的音频wav文件发送到客户端浏览器? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我在我的应用程序中使用烧瓶 我想将音频 wav 文件从服务器端发送到客户端 无论是否将 wav 文件保存在磁盘上 知道怎么做吗 您可以使用以
  • 这是 ServiceStack REST API 上的 Redis 的良好用例吗?

    我正在创建一个移动应用程序 它需要一个 API 服务后端来获取 放置每个用户的信息 我将开发网络服务服务栈 http www servicestack net 但想知道存储情况 我喜欢快速内存缓存系统的想法 例如Redis http red
  • 如何修复 Wordpress 的 WooCommerce 结帐时的无限缓冲区

    我目前遇到一个问题 在 Woocommerce 结账页面上 订单审核部分卡在无限缓冲区中 见下文 我在谷歌上搜索了很多并尝试了各种方法 但到目前为止没有任何效果 在我见过的大多数支持线程中 人们说他们已经能够在 Chrome Firefox
  • cglib - 方法拦截器和最终确定?

    我使用cglibMethodInterceptor包装服务 在每次调用服务时 它都应该打开数据会话 将调用传递给服务 最后关闭会话 但是 我注意到它在调用时行为不端Finalizer 我得到以下堆栈跟踪 java lang IllegalA
  • Tensorflow MNIST:抛出“std::bad_alloc”实例后调用终止

    我正在尝试使用默认的 MNIST 数据集在 Tensorflow 上实现卷积神经网络 from future import print function import tensorflow as tf from tensorflow exa
  • Magento 1.7 价格过滤器错误(未找到列:1054“where 子句”中的未知列“e.min_price”)

    在我的产品列表中 当我过滤价格时 出现此错误 有谁知道 如何解决这个问题 SQLSTATE 42S22 未找到列 1054 未知列 e min price 在 where 子句 中 痕迹 0 var www vhosts domain nl
  • 在 Windows 10 Professional 中安装自定义 inf 时遇到问题。 Windows 使用 OEM 驱动程序覆盖它

    我已经为自定义设备制作了签名的 USB 串行 inf 文件 并创建了一个安装程序 该安装程序成功地将驱动程序安装到 Windows 7 32 64 Windows 8 1 64 但不适用于 Windows 10 这适用于默认安装 右 使用设
  • 使用 Swiftui 我们如何创建用户表单

    我想创建一个表单 其中所有文本字段都需要从相同的对齐方式开始 如下图所示 它不从相同的对齐方式开始 名字 姓氏和电话号码所有文本字段未在单个垂直线上正确对齐 VStack HStack Text First Name TextField F
  • 更新 ATOM 条目的正确/可接受的方法

    什么是 正确 的方式来指示 ATOM 提要中的条目已更新 正确 是指符合现有规范and读者会注意到某些内容并将其标记为新的 未读的 我发现的所有规范都表明支持更新的节点 但是 当我尝试这样的事情时
  • Django 视图中长时间、缓慢的操作会导致超时。有什么办法可以让 Python 代替 AJAX 说话吗?

    我从事 Python 编程已经有一段时间了 但 DJango 和 Web 编程对我来说总体来说还是陌生的 我在 Python 视图中执行了一个很长的操作 由于我认为 local 函数需要很长时间才能返回 因此存在 HTTP 超时 公平地说
  • 并发原子选择更新

    我怎样才能使用 sqlalchemy 做这样的事情 user session query select from user if user state active session query update user set state i
  • 在 C# 中交换 32 位正整数中的位

    所以我正在尝试解决这个问题 给定一个随机的 32 位正整数 你要做的就是将第 3 4 5 位的值与第 24 25 26 位的位值交换 假设这是一个您不需要明确解决方案的问题 这里有一个提示 使用以下命令屏蔽有问题的位 做一个转变 然后OR然
  • 调用chrome.tabs.query后,得不到结果

    我正在创建 学习 Google Chrome 的扩展程序 为了调试一些代码 我插入了console log 如下 var fourmTabs new Array chrome tabs query function tabs for var
  • Javascript随机化数组,而起始位置没有元素[重复]

    这个问题在这里已经有答案了 我有一个 JavaScript 问题 我让用户输入一个名称列表 然后将其放入一个数组中 长话短说 我正在编写一种随机方法 让人们弄清楚他们将为谁购买圣诞礼物 例如 原始数组由以下名称组成 Alex Joel Li