簡體   English   中英

從Random.choices函數獲取唯一項列表

[英]get a list of unique items from Random.choices function

我有一種使用隨機包生成具有一定概率的列表的方法,例如:

import random

seed = 30
rand = random.Random(seed)
options_list = [1, 2, 3, 4, 5, 6]
prob_weights = [0.1, 0.2, 0.1, 0.05, 0.02, 0.06]
result = rand.choices(option_list, prob_weights, k=4) # k will be <= len(option_list)

我的問題是result可以容納兩個相同的項目,並且我希望它是唯一的。

我可以使k參數更大,然后過濾出唯一的項,但這似乎是錯誤的方法。 我查看了文檔,但沒有看到choices函數獲得這種參數。

有什么想法如何配置random以返回唯一項列表?

. 您可以使用np.random.choice ,它允許您分配與每個條目相關的概率,還可以生成隨機樣本 但是,概率必須加起來為1,您必須將向量除以其L^1-Norm 因此,這是您可以執行的操作:

import numpy as np
options_list = np.array([1, 2, 3, 4, 5, 6])
prob_weights = np.array([0.1, 0.2, 0.1, 0.05, 0.02, 0.06])
prob_weights_scaled = prob_weights / sum(prob_weights)
some_length = 4 

np.random.choice(a=options_list, size=some_length, replace=False, p=prob_weights_scaled)

產量

array([2, 1, 6, 3])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM