相关疑难解决方法(0)

如何随机化(shuffle)一个JavaScript数组?

我有这样一个数组:

var arr1 = ["a", "b", "c", "d"];
Run Code Online (Sandbox Code Playgroud)

我如何随机化/随机播放?

javascript arrays shuffle

1138
推荐指数
36
解决办法
67万
查看次数

如何在Javascript中选择加权随机数组元素?

例如:一个数组中有四个项目。我想随机得到一个,像这样:

array items = [
    "bike"    //40% chance to select
    "car"     //30% chance to select
    "boat"    //15% chance to select
    "train"   //10% chance to select
    "plane"   //5%  chance to select
]
Run Code Online (Sandbox Code Playgroud)

javascript random select

10
推荐指数
3
解决办法
8296
查看次数

泡泡洗牌 - 加权洗牌

可以设想对冒泡排序进行修改,其中“交换”以概率随机发生p,而不是通过执行比较。结果可以称为“泡沫洗牌”。靠近前面的元素可能会保留在那里,但有机会移到列表的后面。

修改从互联网上窃取的冒泡排序,您可以想出以下内容:

import random

def bubble_shuffle(arr, p):
    arr = copy.copy(arr)
    n = len(arr) 
  
    # Traverse through all array elements 
    for i in range(n-1): 
    # range(n) also work but outer loop will repeat one time more than needed. 
  
        # Last i elements are already in place 
        for j in range(0, n-i-1): 
  
            # traverse the array from 0 to n-i-1 
            # Swap if random number [0, 1] is less than p
            if random.random() < p:
                arr[j], arr[j+1] = arr[j+1], arr[j] …
Run Code Online (Sandbox Code Playgroud)

python algorithm shuffle list bubble-sort

10
推荐指数
1
解决办法
290
查看次数

数组或数组的加权洗牌?

使用嵌套数组中的权重对一个或多个数组进行混洗的好算法是什么?

例子:

$array = array(
  array("name"=>"John", "rank"=>3),
  array("name"=>"Bob", "rank"=>1),
  array("name"=>"Todd", "rank"=>8),
  array("name"=>"Todd", "rank"=>14),
  array("name"=>"Todd", "rank"=>4)
);
Run Code Online (Sandbox Code Playgroud)

我希望数组随机打乱,但我希望该rank值是一个权重。因此,那些数字排名较低的人更有可能位于列表的顶部。

我已经尝试了一些事情,比如遍历数组并提取使用的数组,mt_rand(mt_rand(0,$value),$value)但我认为我没有走在正确的轨道上......

php arrays random weighted

5
推荐指数
1
解决办法
1289
查看次数

随机打乱加权数组

有一个包含 ID 和这些 ID 的权重的哈希值。

y = { 1 => 0.7, 2 => 0.2, 3 => 0.1 }
Run Code Online (Sandbox Code Playgroud)

我想根据权重对这个哈希值进行洗牌。

我尝试了多种不同的方法,所有这些都给我带来了相似的、意想不到的结果。这是我发现的最简洁的。

y.sort_by {|v| -v[1]*rand()}
Run Code Online (Sandbox Code Playgroud)

当我运行此一万次并选出第一个 ID 时,我得到以下计数:

{1=>8444, 2=>1316, 3=>240}
Run Code Online (Sandbox Code Playgroud)

我希望这些计数能够反映上面的权重(例如1=> 7000)。我有点不清楚为什么这种洗牌与这些权重不匹配。有人可以消除我的困惑并告诉我如何解决它吗?

以下是我发现的一些有用的来源:

ruby arrays shuffle

2
推荐指数
1
解决办法
2856
查看次数

标签 统计

arrays ×3

shuffle ×3

javascript ×2

random ×2

algorithm ×1

bubble-sort ×1

list ×1

php ×1

python ×1

ruby ×1

select ×1

weighted ×1