我有一个100人的名单。每个人都购买了不同数量的门票。数据在json中传递给我。所以它就像约翰·史密斯的100张门票,Jane Doe 55张门票等等#34;我需要随机选择100张中奖彩票,每张彩票的选择概率相同。我已经想出了如何使用Fisher Yates shuffle我只是不能将数据组合起来给每个持票人提供相同的机会。我需要创建55张简票和100张约翰票等,然后将它们洗牌并仅选择前100张。 谢谢你的任何指示。
答案 0 :(得分:1)
不是改组人员列表,而是为每个人创建一个包含一个元素的数组,并从该数组中随机抽取。
所以而不是:
['John Smith', 'Jane Doe', ...]
你有:
['John Smith', 'John Smith', 'John Smith', ..., 'Jane Doe', 'Jane Doe', ...]
当然,有更多内存效率的方法,但这是一个开始。