首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在Fischer-Yates算法中列表的最后一个元素没有被打乱?

在Fisher-Yates算法中,列表的最后一个元素没有被打乱的原因是为了保证算法的正确性和公平性。

Fisher-Yates算法是一种用于随机打乱数组或列表元素顺序的算法。它的基本思想是从数组的最后一个元素开始,依次将当前元素与之前的随机位置的元素进行交换,直到第一个元素。这样做的好处是每个元素都有相等的概率被交换到任意位置,从而实现了随机打乱的效果。

然而,如果在每次交换时也考虑最后一个元素,就会导致最后一个元素被交换到其他位置的概率变得不均等。因为最后一个元素已经被交换过的概率较高,再次交换的概率就会降低。这样就会破坏了算法的公平性,使得打乱的结果不再是真正的随机。

因此,在Fisher-Yates算法中,为了保持算法的正确性和公平性,最后一个元素不参与交换操作,保持其原始位置不变。这样可以确保每个元素被交换到任意位置的概率相等,从而得到一个真正随机的打乱结果。

总结起来,Fisher-Yates算法中列表的最后一个元素没有被打乱是为了保持算法的正确性和公平性,确保打乱结果的随机性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 工地安全帽识别闸机联动开关

    工地安全帽识别闸机联动开关算法通过yolov7系列网络模型深度学习算法,工地安全帽识别闸机联动开关算法工地安全帽识别闸机联动开关算法对施工人员的人脸、安全帽和反光衣进行识别,判断是否符合安全要求。只有当人脸识别成功且安全帽、反光衣齐全时,闸机才会打开允许施工人员进入。工地安全帽识别闸机联动开关算法目标检测架构分为两种,一种是two-stage,一种是one-stage,区别就在于 two-stage 有region proposal过程,类似于一种海选过程,网络会根据候选区域生成位置和类别,而one-stage直接从图片生成位置和类别。今天提到的 YOLO就是一种 one-stage方法。YOLO是You Only Look Once的缩写,意思是神经网络只需要看一次图片,就能输出结果。

    01

    Pytest(16)随机执行测试用例pytest-random-order「建议收藏」

    通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。 pytest默认运行用例的顺序是按模块和用例命名的 ASCII 编码顺序执行的,这就意味着每次运行用例的顺序都是一样的。 app 测试里面有个 monkey 测试,随机在页面点点点,不按常理的点点点能找到更多的不稳定性 bug。那么我们在写pytest用例的时候,既然每个用例都是相互独立的, 那就可以打乱用例的顺序随机执行,用到 pytest 的插件 pytest-random-order 可以实现此目的,github 地址https://github.com/jbasko/pytest-random-order

    03

    人员操作行为识别监测

    人员操作行为识别监测算法实时监测人员的操作行为,人员操作行为识别监测算法通过yolov7深度学习算法网络模型,对前端采集人员操作行为的图像使用算法进行分析,识别出不符合规范的操作行为,并发出告警信号以提醒相关人员。在人员操作行为识别监测算法训练之前,先在ImageNet上进行了预训练,其预训练的分类模型采用图8中前20个卷积层,然后添加一个average-pool层和全连接层。人员操作行为识别监测算法预训练之后,在预训练得到的20层卷积层之上加上随机初始化的4个卷积层和2个全连接层。由于检测任务一般需要更高清的图片,所以将网络的输入从224x224增加到了448x448。

    04

    Pytest(16)随机执行测试用例pytest-random-order[通俗易懂]

    通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。 pytest默认运行用例的顺序是按模块和用例命名的 ASCII 编码顺序执行的,这就意味着每次运行用例的顺序都是一样的。 app 测试里面有个 monkey 测试,随机在页面点点点,不按常理的点点点能找到更多的不稳定性 bug。那么我们在写pytest用例的时候,既然每个用例都是相互独立的, 那就可以打乱用例的顺序随机执行,用到 pytest 的插件 pytest-random-order 可以实现此目的,github 地址https://github.com/jbasko/pytest-random-order

    04
    领券