iT邦幫忙

1

如何在Python的random中增加限制?

import random
random.sample ( ['apple', 'pear', 'peach', 'orange', 'lemon', 'peach'],3)

比方說如果出現peach了 其他兩種水果就不能再有peach這樣
不曉得有沒有辦法做到

suasem iT邦新手 5 級 ‧ 2018-10-24 14:15:24 檢舉
如果先濾掉呢?
random.sample ( set(['apple', 'pear', 'peach', 'orange', 'lemon', 'peach']),3)

random.sample ( {'apple', 'pear', 'peach', 'orange', 'lemon', 'peach'},3)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
褲底農民
iT邦新手 4 級 ‧ 2018-10-26 12:41:18
最佳解答

小弟想到兩種方式
如果在高手眼中太拙劣請見諒

import random

options = ['apple', 'pear', 'peach', 'orange', 'peach']

def ver1(n):
    for i in range(n):
        a = random.sample(options,3)
        if a.count('peach') > 1:
            continue
        else:
            print(a)


def ver2(n):
    for i in range(n):
        set_obj = set(options)
        b = random.sample(set_obj, 3)
        print(b)

ver1是以count()過濾掉出現兩次的情況。
ver2則是以set()內元素不會重複的特性,過濾掉原本list的重複元素。

vsu91267 iT邦新手 5 級 ‧ 2018-10-30 08:36:38 檢舉

3Q

1
froce
iT邦大師 1 級 ‧ 2018-10-24 11:46:55
options = ['apple', 'pear', 'peach', 'orange', 'lemon', 'peach']
random.shuffle(options)
print(options[:3])

random.sample ( ['apple', 'pear', 'peach', 'orange', 'lemon', 'peach'], k=3)
vsu91267 iT邦新手 5 級 ‧ 2018-10-24 12:56:22 檢舉

對 froce哥
遇到狀況是:
如果沒有peach就沒關係
但是出現peach的話 剩那兩個一定不能有peach
或者第一個一定要peach
請問這樣的限制該怎麼寫><

youarefat iT邦新手 5 級 ‧ 2018-10-25 14:42:51 檢舉

所以把peach拿出來自己判斷?
options就其他的隨便取兩個或三個?

0
Jack
iT邦新手 5 級 ‧ 2018-11-07 15:16:16
import random
fruit = ['apple', 'pear', 'peach', 'orange', 'peach']

print(random.sample(set(fruit),3))

我要發表回答

立即登入回答