【问题标题】:Shuffling cards in a repeater using images from a dataset in Wix使用 Wix 数据集中的图像在中继器中洗牌
【发布时间】:2022-01-19 21:32:29
【问题描述】:

我正在 Wix 上创建一个页面,其中我有一个中继器,当单击应该洗牌并带来不同组合的洗牌按钮(数据集中有 22 张牌)时,它一次只能从我的数据集中带来 3 个项目.

我的期望: 点击按钮,然后它会从一副 22 张卡片中随机抽取 3 张卡片(即我数据集中卡片的图像)。

发生了什么: 它带来了相同的几种卡片组合,实际上并不是随机的,有些卡片永远不会出现。

这是我的代码:

export function button7_click(event) {

// clear any filters in the dataset
$w("#dynamicDataset").setFilter( wixData.filter() );

// get size of collection that is connected to the dataset
let count = $w("#dynamicDataset").getTotalCount();

// get random number using the size as the maximum
let idx = Math.floor(Math.random() * count-1);

// set the current item index of the dataset
$w("#dynamicDataset").setCurrentItemIndex(idx);
}

我该怎么做才能带来真正随机散布的 3 张牌?

【问题讨论】:

    标签: javascript shuffle velo


    【解决方案1】:

    JavaScript 的Math.random() 函数速度很快,但也有问题。首先,它不是可播种的,其次,它的随机性几乎没有可取之处。根据Birthday Paradox,重复值的存在并不意味着它们是随机的。虽然改变 JavaScript 中随机数模式的方法有很多,但社区采用了以下三种不同的方法:

    1. Seedable Random Number Generator Algorithm:该算法允许在 Javascript 中生成可种子随机数生成器,您可以对其进行调整以生成确定性随机数序列。浏览器不提供播种Math.random() 的内置方法,因此当您需要完全可预测的可重复伪随机序列以及需要比浏览器更不可预测的强大种子时,此解决方案非常有用。李>
    2. Mersenne Twister:此算法弥补了不允许为 Math.random() 指定初始值的情况。
    3. AleaPRNG Algorithm:伪随机数生成器 (PRNG) 是一种用于生成数字序列的算法,其属性与随机数序列的属性近似。 Alea 包实现了这个算法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 2018-05-25
      • 1970-01-01
      • 2017-11-14
      • 2019-11-24
      • 2019-01-25
      相关资源
      最近更新 更多