gpt4 book ai didi

javascript - Javascript 随机化数组函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:24:51 24 4
gpt4 key购买 nike

试图规划一个功能,我想获得一些意见。我正在尝试找到一种有效的方法来:

  1. 将数组中数字的频率加倍

  2. 随机化数组中值的位置。

例如:假设我有一个数组。 [0,1,2,3]

  1. 首先,我想在一个新数组中将每个数字复制一次。所以现在我们会有这样的东西。[0,0,1,1,2,2,3,3]

  2. 最后,我想随机化这些值:[0,4,2,3,0,2,3,4]

最终,我编写的算法将需要处理一个 18 位数字的初始数组(因此最终的随机数组大小为 36)

我最初的想法是有一个简单的 while 循环:

  1. 在新数组中随机选择一个点
  2. 检查是否已满- 如果已满,则会选择一个新点并再次检查。
  3. 如果未满,则将值放入新数组,并转到下一个值。

我遗漏了一些细节等,但我希望这个算法相当快,这样用户就不会注意到任何东西。

我担心的是,当只剩下一个数字要放置时,算法将永远放置它,因为它有 1/36 的机会选择空白。

一般来说,我怎样才能做出更智能、更快速的算法来完成我想做的事情?

非常感谢!

最佳答案

first I want to duplicate each number once in a new array. So now we would have something like this. [0,0,1,1,2,2,3,3].

完成起来会相当复杂。由于位置无论如何都不相关,只需通过

构建[0,1,2,3,0,1,2,3]
var newArray = arr.concat(arr);

Lastly, I want to randomize these values so: [0,4,2,3,0,2,3,4]

只需使用一种公认的洗牌算法 - 请参阅 How to randomize (shuffle) a JavaScript array? .有相当简单的线性时间运行并且不会遇到您描述的问题,因为它们不需要随机尝试

关于javascript - Javascript 随机化数组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27298362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com